社区
Linux/Unix社区
帖子详情
socket send的返回值
liuscmail
2011-01-06 11:23:08
虽然看到很多文章,但是没有确定
send返回的数值是发送到客服端并且在tcp层得到确认之后的值吗?
还是send的返回值只是发送到client的内核缓冲区的可用空间里面之后,就返回了
还有就是,这个数值是否受非阻塞O_NONBLOCK,异步O_ASYNC socket操作的影响,具体怎么影响的那
期待高人解答啊
...全文
3601
8
打赏
收藏
socket send的返回值
虽然看到很多文章,但是没有确定 send返回的数值是发送到客服端并且在tcp层得到确认之后的值吗? 还是send的返回值只是发送到client的内核缓冲区的可用空间里面之后,就返回了 还有就是,这个数值是否受非阻塞O_NONBLOCK,异步O_ASYNC socket操作的影响,具体怎么影响的那 期待高人解答啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
changecode
2012-09-14
打赏
举报
回复
你到底是问send还是recv啊?
请问判断send是否成功是不是返回>0的状态?
liuscmail
2011-01-11
打赏
举报
回复
那我想问一下,recv有可能没有完全接受下来一个完整的包,是怎么回事?
当recv指定的接受缓冲区比socket的缓冲区还大的情况下,会存在接受不能完全接受缓冲区的状况吗?
有人说recv可能没有一次把数据接受完,send也可能没一次发生完所有数据,都是什么情况
高人详细解答一下。
[Quote=引用 2 楼 justkk 的回复:]
没研究那么深入
send的返回值就认为是成功发送到对方的字节数目
socket的发送变得可用,就是缓冲区有剩余空间,允许发送新的数据。
socket的接受变得可用,就是缓冲区有数据,允许读取
[/Quote]
justkk
2011-01-11
打赏
举报
回复
可能因为网络的原因
部分数据先期到达了,那recv就只返回这部分数据
Wenxy1
2011-01-07
打赏
举报
回复
查看send函数手册: #man send.
send()的返回值是成功把数据发送到目的机器的字节数(我不是很确定,也许是把数据放入到TCP/IP协议栈的发送队列)。建议看看书或者send的函数的实现。
有3年时间没怎么写应用程序了,:)。
justkk
2011-01-07
打赏
举报
回复
没研究那么深入
send的返回值就认为是成功发送到对方的字节数目
socket的发送变得可用,就是缓冲区有剩余空间,允许发送新的数据。
socket的接受变得可用,就是缓冲区有数据,允许读取
井朝天
2011-01-07
打赏
举报
回复
仅仅是写到发送缓冲区成功与否而已。(发送缓冲区满了就写不了啦)
照你这么说UDP里面该咋办?
李亚超
2011-01-07
打赏
举报
回复
0,成功。
liuscmail
2011-01-06
打赏
举报
回复
补充一下,socket的发送和接受变得可用,具体是指的什么状态
C#
Socket
发送&接收&返回 简单应用实例
下面小编就为大家分享一篇C#
Socket
发送&接收&返回 简单应用实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
关于
socket
阻塞与非阻塞情况下的recv、
send
、read、write
返回值
.zip
关于
socket
阻塞与非阻塞情况下的recv、
send
、read、write
返回值
.zip
socket
send
返回值
_Linux网络编程中
socket
常见错误分析
socket
错误码:EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的
socket
。读,写阻塞的
socket
时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的
返回值
为0,那表明连接已经断开,接收操作也应该结束。ETIMEOUT:110...
linux
socket
编程中的recv和
send
的
返回值
介绍及其含义。
recv方法:模型: #include <sys/types.h> #include <sys/
socket
.h> ssize_t recv(int sockfd, void *buf, size_t len, int flags);参数:sockfd创建的文件描述符fd,buf接收数据的缓冲区,len接收数据的长度,flags表示信息,默认设置为0当应用程序调用recv接...
【
Socket
网络编程】recv()与
send
()的
返回值
1、intrecv(
SOCKET
s, char *buf, intlen, intflags); 0、recv会先等待套接字s的发送缓冲中的数据被协议传送完毕,如果协议在传送s的发送缓冲中的数据时出现网络错误,那么recv函数返回
SOCKET
_ERROR(= -1); 如果s的发送缓冲区中没有数据或者数据被协议成功发送完毕后,recv再检查套接字s的接收缓冲区,如果s接收缓冲...
Linux/Unix社区
23,121
社区成员
74,508
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章