怎样让Server迅速得知Client端断开了连接?

runbuff 2001-03-06 12:33:00
我在局域网上利用WinSock编程,操作系统为Windows9X。现有一个问题求教:当Server端与Client连接好后,Server端有没有什么好的办法,在Client端断开了连接(如关机、断电、用Close主动断开等等),很快(3秒左右)就得知这一事件?
...全文
195 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
runbuff 2001-03-06
  • 打赏
  • 举报
回复
server兄:你的意思是要在每3秒内就要select试一下吗?
server 2001-03-06
  • 打赏
  • 举报
回复
用select即检测client sock 号的读写状态,又可设延迟,具体请查阅select函数
server 2001-03-06
  • 打赏
  • 举报
回复


int result ;
fd_set fdset;
struct timeval recvdelay = {3,0};

FD_ZERO(&(fdset));
FD_SET(sock,&(fdset));

result = select(0,&(fdset),NULL,NULL,&recvdelay);
if(result <=0)
// client timeout or some socket error
else
// now can recv
ivanlee_cn 2001-03-06
  • 打赏
  • 举报
回复
是用UDP和对方建立一个连接。

L(udp):SND A1(4BYTE的任意数值).
R(udp):RCV A1 -> SND A1
L(udp):RCV A1 ->CMP RCV_A1 AND SND_A1 if same then link content.else link off.
...

(some time)
R(udp):Timeout(3 second) But RCV nothing ,the link off.

4,391

社区成员

发帖
与我相关
我的任务
社区描述
通信技术相关讨论
社区管理员
  • 网络通信
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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