用socket()建立起来的连接,如何知道服务器的关闭呢?(50分)

  • 主题发起人 sendittome
  • 开始时间
S

sendittome

Unregistered / Unconfirmed
GUEST, unregistred user!
在用recv函数取数据的时候,如果返回值为0,则服务器端已关闭。
 
那不一定啊,如果网络有问题怎么办?:)
 
那么说,不调用recv就不知道server关闭啦?
 
recv返回值有这么几种情况:
SOCKET_ERROR(-1):无数据
0:联接断开
<0:其它错误
如果采用阻塞模式socket编程,recv函数是一直在运行的(位于线程中)
 
收发都返回0,可以认为socket已经断开。
如果是网络问题,可以用setsocketopt函数设置检查,但好像最快也要2个小时才能知道,
最后是在client和server之间定义一个可以检查的机制。
 
用select()函数,就可以在自己指定的时间内判断服务器是否超时,超时通常发生在网络
中断的情况下。
 
顶部