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

recv读取套接字返回值问题

    来源: 互联网  发布时间:2017-03-04

    本文导语:  我用的是非阻塞模式读取套接字内容,sz 为要读取的字节数,有的时候能够正常输出结果,但是有时候结果却输出:r_len > 0 r_len = -1,这是为什么啊?从没遇见过!请求高手指点一下! while(sz != 0) {   r_len = re...

我用的是非阻塞模式读取套接字内容,sz 为要读取的字节数,有的时候能够正常输出结果,但是有时候结果却输出:r_len > 0 r_len = -1,这是为什么啊?从没遇见过!请求高手指点一下!

while(sz != 0)
{
  r_len = recv(s_fd, p1, sz, 0);
  if (r_len  0)
  {
    printf("r_len > 0 r_len = %dn", r_len);
    sz -= r_len;
    p1 += r_len;
  }
}

|
recv的标准返回值类型ssize_t 是一种signed 类型 
而size_t 是一种unsigned类型。

|
没看出问题

|
查看recv函数帮助文档:
#man recv

一般是对方关闭了连接。

|
同样没看出来。

|
请问你的r_len是什么类型? 
如果你的r_len是unsigned (size_t也是unsigned类型)类型的话,
那就会出现这种情况 。

如果r_len 为unsigned类型,那么在和别的数比较时,都会提升为unsigned类型
则r_len 

    
 
 

您可能感兴趣的文章:

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












  • 相关文章推荐
  • 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编程中调recv函数无法阻塞?
  • 关于socket的send(),recv()的问题.
  • socket中的疑问:read,write和send,recv的区别
  • 求助:关于单线程recv时的超时问题
  • linux c 网络编程时用 recv 函数
  • 请问:SCO UNIX下SOCKET的recv返回-1,errno=9?在线等·····
  • socket编程中的函数send和recv如何被信号中断?


  • 站内导航:


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

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

    浙ICP备11055608号-3