
31.10.2009, 21:11
|
|
Moderator - Level 7
Регистрация: 02.05.2009
Сообщений: 894
С нами:
8960826
Репутация:
2261
|
|
предыдущую копию этого вопроса (2 дня назад) удалил, по прежнему актуально.
не верю что совершенно никто не знает
за решение с меня +10.
вопрос:
как реализовать периодический отстук приложения внутри одного сокета?
Вариант, который отстукивает каждые 60 секунд создавая новый сокет:
Код:
WSAStartup(MAKEWORD(2,0), wsaData);
while not terminated do
begin
sleep(60000);
s:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
FillChar(addr, SizeOf(sockaddr_in), 0);
addr.sin_family:=AF_Inet;
addr.sin_addr.S_addr:=inet_addr('111.22.33.44');
addr.sin_port:=htons(80);
Connect(S,addr,SizeOf(TSockAddr));
sendbuff :=
'GET / HTTP/1.1'+ #13#10 +
'Host: 111.22.33.44'+ #13#10#13#10;
send(s, sendbuff[1] , Length(sendbuff), 0);
closesocket(s);
end;
WSACleanup;
Если вписать строку с send 2 раза(метод научного тыка), то на второй отстук внутри того же сокета ответа от хоста не будет. Добавлять
Keep-Alive: 300
Connection: Keep-Alive
тоже бесполено. Видимо изначально нужно как-то до-другому открывать сокет.
Заранее благодарю
|
|
|