recv无法接受数据解决办法

recv无法接受数据
我在客户端连接号服务器之后,用下面的代码接收数据
len   =   ::recv   (   m_sock,   buf,   MAXRECV,   0   );
如果是堵塞模式,那么就会死在这儿,一直没有数据返回。但是服务器端是有数据发出的的。
如果我用ctl+c关闭服务器端,马上就会收到数据。

如果我用非堵塞模式,这个函数马上返回,不会接收到任何数据。

处于堵塞模式的时候,如果我在recv前使用了select,那么这个select也会一直堵塞,直到超时返回0,这时即使ctl+c关闭服务器端,也不会收到数据,希望各位英雄帮忙,很急。


非堵塞模式下如果返回-1而errno为EAGAIN,你可以继续去读,用一个while循环即可,也可以在服务器端发送特定的字符串比如“DONE”通知客户端退出。


堵塞模式下数据没有达到MAXRECV这么多的话,是不会返回的。


建议你要一个线程专门用来接收,这样能响应快点!而且不易错问题!


支持2楼的说法

recv无法接受数据解决办法

相关文章:

你感兴趣的文章:

标签云: