当前位置:  技术问答>linux和unix

recv无法接受数据

    来源: 互联网  发布时间:2016-01-13

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

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

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

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

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

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


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

|
支持2楼的说法 

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • (socket通信)poll提示有数据可读 recv却返回 EAGAIN
  • linux下还有数据没有recv完,能send数据吗?
  • Linux下怎么用read或recv函数完全接收socket发来的数据?
  • 关于 recv() 怎么接收结构体数据
  • 用了一recv次之后为什么不能继续发送数据?
  • 为什么用socket的send和recv传数据,总会丢失一些数据
  • 高分请教socket简单问题:客户端send数据过去,没有反应,recv时候失败。
  • sos,,一个小程序,,接收数据,,可不知道为什么read就是出错,用recv就可以。
  • recv如何使用?
  • 虚拟机的linux,在其中运行Server和Client,Server端send了一个大小4096B的包,客户端recv到3845B,用netstat查看连接,Recv-Q和Send-Q项显示为0,为什么没收完?其余字节哪去了??
  • socket编程 是recv阻塞
  • socket编程:recv(...)函数问题求救
  • recv在什么情况下会返回0
  • socket tcp 关于 alarm() 和 recv() ?
  • 请教soclet中recv()函数最大返回值的问题
  • 对recv函数第四个参数置0的疑问
  • 关于recv函数的问题
  • linux 网络编程 recv函数
  • linux c recv
  • 请问 : read, 与recv 两个函数有什么区别啊?
  • recv 接收 ,接收空间不够大, 可以通过什么知道?
  • 关于socket的send(),recv()的问题.
  • socket中的疑问:read,write和send,recv的区别
  • 求助:关于单线程recv时的超时问题
  • linux c 网络编程时用 recv 函数
  • 请问:SCO UNIX下SOCKET的recv返回-1,errno=9?在线等·····
  • socket编程中的函数send和recv如何被信号中断?
  • recv返回值大于要得到的大小?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3