winsock Не работает TimeOut

 
0
 
Delphi, Kylix & Pascal
ava
DeSx86 | 17.03.2013, 12:19
Здравствуйте, такая проблема, в программе не работает тайм аут на соединение, если порт закрыт сокет очень долго ждёт ответа.
Вот код.

  begin
  TimeOut:=2000;

  ip:=(IntToStr(h)+'.'+IntToStr(c)+'.'+IntToStr(j)+'.'+IntToStr(i));
         if WSAStartup($101,D)<>0 then
          begin
            ShowMessage('error..');
            exit;
          end;

        Form2.StatusBar1.Panels[0].Text:=ip;
        A.sin_family:=AF_INET;
  A.sin_addr.S_addr:=inet_addr(pchar(ip));
  S:=socket(AF_INET,SOCK_STREAM,0);
    if S=INVALID_SOCKET then  Form2.Memo1.Lines.Add('socket error');
        A.sin_port:=htons(StrToInt(Form2.Edit9.Text));
        setsockopt(S, SOL_SOCKET, SO_RCVTIMEO, @TimeOut, SizeOf(TimeOut));
        setsockopt(S, SOL_SOCKET, SO_SNDTIMEO, @TimeOut, SizeOf(TimeOut));
    if connect(S,A,sizeof(A))=0 then
        Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' On')

    else
    Form2.Memo1.Lines.Add(ip+':'+Form2.Edit9.Text+' Off');
    end;


Что сделать, что если сервер не ответил в течении 2х секунд брался следующий ip, а этот получал статус "Off"?
Comments (1)
ava
Чучмек | 17.03.2013, 14:12 #
DeSx86,  читай внимательней.
timeval structure (Windows)

var
  timeout:TTimeVal;
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit