当前位置: 技术问答>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;
}
}
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类型。
而size_t 是一种unsigned类型。
|
没看出问题
|
查看recv函数帮助文档:
#man recv
一般是对方关闭了连接。
#man recv
一般是对方关闭了连接。
|
同样没看出来。
|
请问你的r_len是什么类型?
如果你的r_len是unsigned (size_t也是unsigned类型)类型的话,
那就会出现这种情况 。
如果r_len 为unsigned类型,那么在和别的数比较时,都会提升为unsigned类型
则r_len
如果你的r_len是unsigned (size_t也是unsigned类型)类型的话,
那就会出现这种情况 。
如果r_len 为unsigned类型,那么在和别的数比较时,都会提升为unsigned类型
则r_len
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
站内导航:
特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!