在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初始化的时候