如何定义socket的超时机制??

sulemon 2004-07-22 08:17:34
在程序中定义一个线程,send数据包给服务器,然后等待服务器的回复信息。
这里就涉及到了超时,不可能无限期的等待下去。
请问各位,一般都是这样设置超时机制的啊?????? 多谢
...全文
202 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfdream 2004-10-15
  • 打赏
  • 举报
回复
阻塞方式,要配合SELECT使用才能较好处理超时。

sulemon_linux 2004-10-15
  • 打赏
  • 举报
回复
解决办法1。 开个线程,然后用time的vcl空间在控制时间
2。 用indy的组件,它里面是有超时的机制的!
sulemon 2004-07-23
  • 打赏
  • 举报
回复
我是这么写的,不过好像不能用,程序运行到 recvlen:=recv(FSocket,buf,sizeof(buf),0) ;时,如果收不到字符串就停在这里了,郁闷!!! 各位大哥指导下阿,。。
var timeout:integer;


timeout:=1;
timeout:=timeout+1;
fillchar(buf, sizeof(buf),#0);
recvlen:=recv(FSocket,buf,sizeof(buf),0) ;
if (recvlen>0) and (timeout<10) then
begin
mainform.Memo1.Lines.Add(datetimetostr(now())+' '+copy(buf,0,recvlen));
showmessage('done');
update_meterchange.Close;
exit;
end
else
begin
showmessage('setting failed');
exit;
end;
haoshuaioo 2004-07-23
  • 打赏
  • 举报
回复
关注
wolf2005 2004-07-23
  • 打赏
  • 举报
回复
是用Indy Client组件吗
  • 打赏
  • 举报
回复
帮你顶

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧