PDA

Просмотр полной версии : Delphi tcp/ip - и мой пк!


LeonW
11.10.2005, 20:17
Привет всем!
моя компания использует проксхи - ну да ладно, сразу к делу!
как сделать программу в 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
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
а как переветси на паскаль???

KEZ
13.10.2005, 15:52
Это тебе решать как переводить, код я тебе дал.

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

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

LeonW
13.10.2005, 17:20
Привет! посибо но на с++ не надо. пожалуйста!
но все ровно спосибо!
-------------------------------------------------------------------
а какие последствия могут быть - если я свой 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 ))))

LeonW
14.10.2005, 06:07
Ok - спосибо! Да = delphi изучаю! :)