永发信息网

linux 网络编程 send 做了什么操作

答案:1  悬赏:20  手机版
解决时间 2021-03-10 14:50
linux 网络编程 send 做了什么操作
最佳答案
send解析
sockfd:指定发送端套接字描述符。
buff: 存放要发送数据的缓冲区
nbytes: 实际要改善的数据的字节数
flags: 一般设置为0
1) send先比较发送数据的长度nbytes和套接字sockfd的发送缓冲区的长度,如果nbytes > 套接字sockfd的发送缓冲区的长度, 该函数返回SOCKET_ERROR;
2) 如果nbtyes <= 套接字sockfd的发送缓冲区的长度,那么send先检查协议是否正在发送sockfd的发送缓冲区中的数据,如果是就等待协议把数据发送完,如果协议还没有开始发送sockfd的发送缓冲区中的数据或者sockfd的发送缓冲区中没有数据,那么send就比较sockfd的发送缓冲区的剩余空间和nbytes
3) 如果 nbytes > 套接字sockfd的发送缓冲区剩余空间的长度,send就一起等待协议把套接字sockfd的发送缓冲区中的数据发送完
4) 如果 nbytes < 套接字sockfd的发送缓冲区剩余空间大小,send就仅仅把buf中的数据copy到剩余空间里(注意并不是send把套接字sockfd的发送缓冲区中的数据传到连接的另一端的,而是协议传送的,send仅仅是把buf中的数据copy到套接字sockfd的发送缓冲区的剩余空间里)。
5) 如果send函数copy成功,就返回实际copy的字节数,如果send在copy数据时出现错误,那么send就返回SOCKET_ERROR; 如果在等待协议传送数据时网络断开,send函数也返回SOCKET_ERROR。
6) send函数把buff中的数据成功copy到sockfd的改善缓冲区的剩余空间后它就返回了,但是此时这些数据并不一定马上被传到连接的另一端。如果协议在后续的传送过程中出现网络错误的话,那么下一个socket函数就会返回SOCKET_ERROR。(每一个除send的socket函数在执行的最开始总要先等待套接字的发送缓冲区中的数据被协议传递完毕才能继续,如果在等待时出现网络错误那么该socket函数就返回SOCKET_ERROR)
7) 在unix系统下,如果send在等待协议传送数据时网络断开,调用send的进程会接收到一个SIGPIPE信号,进程对该信号的处理是进程终止。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
轩语蛋糕在什么地方啊,我要过去处理事情
国内金融学专业大学哪个最好?
最好有商务,有艺术好几种字体的,谢谢了
工伤赔偿首先找哪个部门
房地产代理有限公司会计账务如何做
他有胆量勾引我 你现在亲在我嘴唇上!滚边俩去
还有90多天高考,英语怎么提高
我爱你徐燕彤 韩文怎么写 求解
爱贝街学习商城官网cpa考试软件
顶呱呱服饰我想知道这个在什么地方
对某中学八年级100名学生的一项调查显示:在
为什么我qq上发说说手机标识不显示别人的却显
女孩的rt是什么意思
上传速度被限制怎么改
苍蝇药喷眼里了没事吧
推荐资讯
有浓度分别为40%和75%的酒精溶液,要配制成60
平顶山这个地址在什么地方,我要处理点事
读图2-43.回答下面试题. 12.图中四点属于暖
谜语“白驹过隙”谜底解谜
女孩性格被动 慢热在恋爱中的表现形式
罗仙子特色铁锅炖(大学城一店)怎么去啊,有知
“农夫早出暮入,耕稼树艺,多聚菽粟,此其分
昌平唐人世纪XXXXXX
美国红枫为什么会在冬天掉叶子
刘德华谁的心里有多苦
为什么有的软件进去会立即被弹出(金立手机)
河南嵩山少林“七十二绝技”究竟包含了哪些?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?