如题
并可以设置阻塞时间,时间过后未回答认为超时,继续往下执行,求各位大哥大姐给个解决方法,谢谢

解决方案 »

  1.   

    //iTime:DWORD
    //设置接收超时
    SetSockOpt(sock,SOL_SOCKET,SO_RCVTIMEO,PChar(@iTime),SizeOf(iTime))//等待数据缓冲阻塞,返回False超时
    function WaitReceiveData(s:Tsocket; sec:dword):Bool;
    var
      FDRead: TFDSet;
      TimeVal:TTimeVal;
    begin
      Result:=False;
      FD_ZERO(FDRead);
      FD_SET(s, FDRead);
      TimeVal.tv_sec:=sec;
      TimeVal.tv_usec:=0;
      if select(0, @FDRead, nil, nil, @TimeVal) >=1 then
       Result:=FD_ISSET(s, FDRead);
    end;
      

  2.   

    谢谢,请问SetSockOpt这个函数使用在什么地方?