Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Delphi tcp/ip - и мой пк! (https://forum.antichat.xyz/showthread.php?t=9995)

LeonW 11.10.2005 20:17

Delphi tcp/ip - и мой пк!
 
Привет всем!
моя компания использует проксхи - ну да ладно, сразу к делу!
как сделать программу в Delphi которая:
1) определяет мой ip
2) опредиляет время загрузки самой себя?
3) посылает мне на мыло эти данные!
4) закрывается до следующей загрузки пк.
посибо Leon :confused:

KEZ 12.10.2005 10:59

Ну айпи твой всегда почти 127.0.0.1 так что можешь смело вбивать это значение.
Время загрузки самой себя... Что ты понимаешь под загрузкой? Время с запуска EXE по создание окна? Тогда вызывай old_time = time( NULL ); и в конце elapsed_time = time(NULL)-old_time; только переведи это на паскаль. На мыло посылать очень просто через SMTP.
Код:

int s;
struct sockaddr_in s_a;

s = socket( AF_INET, SOCK_STREAM, 0 );
s_a.sin_family = AF_INET;
s_a.sin_port  = htons( 25 );
s_a.sin_addr.s_addr = inet_addr( "[тут ip мейл.ру например]" );
if (connect( s, (struct sockaddr*)&s_a, sizeof( s_a ) ) == SOCKET_ERROR) return 0;

(создай корчое сокет соединения с почтовым сервером на 25 порту)
и посылай
(сервак должен посылать 250 Ok)
HELO имя_домена\r\n
MAIL FROM: <123@mail.ru>\r\n
RCPT TO: <to@mail.ru>\r\n
DATA\r\n
\r\n
[DATA]
. (ТОЧКА!)

если не ошибаюсь...
коды возврата SMTP
211 system status, or system helo reply
214 Help message....
220 <domain> service ready
221 <domain> service closing transmission channel
250 Requested mail action okay, completed
251 User to local; will forward to <forward-path>
354 Start with input; end with <CRLF>.<CRLF> (\r\n)
421 <domain> service not avialable (пошел нафиг типа)

LeonW 12.10.2005 18:56

e-mail
 
KEZ - привет! понажимал я на твои ссылки.
я только начал заниматся с delphi! поэтому не все понил что ты там написал?
а 127,0,0,1 - это не тот ip -сегодня был на сайте - где опредиляют ip - и мне показали совсем другой! :confused:

KEZ 12.10.2005 19:24

Вот ф-ия опеределия своего айпи в интернете

Код:

char *SelfIP( void )
{
        char *temp = (char*)malloc( 256 );
        struct in_addr in;

        DWORD      ip = 0;
        LPHOSTENT  he;

        if (!gethostname( temp, 256 ))
        {
                if (he = gethostbyname( temp ))
                ip = ((LPIN_ADDR)he->h_addr)->s_addr;
        }

        memcpy( &in.s_addr, he->h_addr, he->h_length );
       
        return inet_ntoa( in );
}

теперь переведи это на паскаль и получишь код для Delphi

KEZ 12.10.2005 19:25

и не забудь

WSADATA wsadata;
WSAStartup( MAKEWORD( 1, 1 ), &wsadata );
а в конце
WSACleanup();

в линуксе сеть используется без подобных ф-ия а в винде у тебя сокет даже не создасться без них

LeonW 13.10.2005 15:19

pascal
 
а как переветси на паскаль???

KEZ 13.10.2005 15:52

Это тебе решать как переводить, код я тебе дал.

bul666 13.10.2005 16:19

Цитата:

Сообщение от LeonW
Привет всем!
моя компания использует проксхи - ну да ладно, сразу к делу!
как сделать программу в Delphi которая:
1) определяет мой ip
2) опредиляет время загрузки самой себя?
3) посылает мне на мыло эти данные!
4) закрывается до следующей загрузки пк.
посибо Leon :confused:

Стукни мне в Асю или На мыло (bul666@inbox.ru) Я тебе на C++ Напишу )))

LeonW 13.10.2005 17:20

cpp
 
Привет! посибо но на с++ не надо. пожалуйста!
но все ровно спосибо!
-------------------------------------------------------------------
а какие последствия могут быть - если я свой ip - буду
отпровлять себеже на email>>??????????? :rolleyes:

Raider 14.10.2005 03:53

Цитата:

1) определяет мой ip
procedure TForm1.Button1Click(Sender: TObject);
var
WSAData: TWSAData;
HostEnt: PHostEnt;
LocalIP: String;
Buff: array [0..MAX_COMPUTERNAME_LENGTH] of Char;
begin
FillChar(Buff, SizeOf(Buff), 0);
WSAStartUp($0101, WSAData);
GetHostName(Buff, SizeOf(Buff));
HostEnt := GetHostByName(Buff);
LocalIP := inet_ntoa(PInAddr(HostEnt.h_addr_list^)^);
ShowMessage(LocalIP); // ip
WSACleanUP();
end;

Цитата:

2) опредиляет время загрузки самой себя?
Событие OnCreate (у формы) происходит в момент создания:

procedure TForm1.FormCreate(Sender: TObject);
begin
ShowMessage(TimeToStr(Time)); // время
end;

Цитата:

3) посылает мне на мыло эти данные!
Афтор, ты на Delphi пишешь или на чём то другом ? Оглянись, там куча компонентов, если ты пишешь на 7-ом
и выше, то для отправки почты есть компонент TidSTMP, или чтотто в этом роде ... а на Api писать имхо
рановато те ...

Цитата:

4) закрывается до следующей загрузки пк.
Halt, но вобщето правельней Application.Terminate, хотя пох как )

Пропишись в автозагрузку, в реестр, как работать с реестром ты найдёшь в инэте.

ps
Все твои вопросы это FAQ, так что прежде чем спросить не поленись и поискать.


Цитата:

а какие последствия могут быть - если я свой ip - буду
отпровлять себеже на email>>???????????
Серьёзные последствия, вплоть до остановки smtp сервака LOL ))))


Время: 17:24