ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Программирование_OLD > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

Winsock TimeOut
  #1  
Старый 19.05.2010, 22:08
denjf
Участник форума
Регистрация: 12.11.2008
Сообщений: 146
Провел на форуме:
592199

Репутация: 21
По умолчанию Winsock TimeOut

Цитата:
block:=1;
sock:=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if sock=LongWord(-1) then exit;
SockAddrIn.sin_family := AF_INET;
SockAddrIn.sin_port := htons(strtoint(PROXY_PORT));
SockAddrIn.sin_addr.s_addr := inet_addr(Pansichar(PROXY_IP));

ioctlsocket(sock, FIONBIO, block); // переводим сокет в неблокируемый режим
if connect(sock, SockAddrIn, SizeOf(SockAddrIn))=SOCKET_ERROR then // пытаемся подключиться
begin
if WSAGetLastError=WSAEWOULDBLOCK then // проверяем что сокет перешел в неблокируемый режим
begin
FD_ZERO(fds);
FD_SET(sock,fds);
timeout.tv_sec:=strtoint(form1.Edit1.Text); // наш таймаут
timeout.tv_usec:=0;
rc:=select(0, nil, @fds, nil, @timeout); // ожидаем
end;
end;
block:=0;
ioctlsocket(sock, FIONBIO, block); // переводим сокет обратно в блокируемый режим
if rc=0 then
begin
// сработал таймаут

synchronize(showresultbad);
end
else
begin
брал от сюда https://forum.antichat.ru/thread178458.html

Нашел на форуме пример таймаута для сокетов.
Но что то глючно работает. Не срабатывает на тормазнутых соксах.
 
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ