我使用的是raw socket,不使用select()消息机制,直接使用recv()可以判断服务器端的socket关闭的动作吗?我想去跟mfc源码,但是如果有哪为大虾指点一下,小弟感激不尽。

解决方案 »

  1.   

    raw socket跟踪原码?关闭的话,是发送一个FIN包或者RST包的,解析IP包头可行。
      

  2.   

    应该可以的,如果是服务器端正常关闭(不是暴力方法,如拔掉网线或者直接用钳子剪断),recv会返回0个字节,表示对方已经关闭
      

  3.   

    是啊,recv会返回0个字节,但是如果socket缓冲区没有数据,recv()也返回0个字节,我怎么知道是缓冲区没有数据还是socket已经关闭了呢?