首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

在delphi中使用Socket,发送数据后阻塞等待处理结果再往下执行。该如何解决

2012-03-05 
在delphi中使用Socket,发送数据后阻塞等待处理结果再往下执行。如题并可以设置阻塞时间,时间过后未回答认为

在delphi中使用Socket,发送数据后阻塞等待处理结果再往下执行。
如题
并可以设置阻塞时间,时间过后未回答认为超时,继续往下执行,求各位大哥大姐给个解决方法,谢谢

[解决办法]
//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;
[解决办法]
SOCKET初始化的时候

热点排行