社区
Linux/Unix社区
帖子详情
tcp socket每次将发送缓冲区中的数据全部发出去?
fengwanzk
2015-12-14 11:36:48
redhat6.0,用哪个函数,如何设置,可以使得send函数每次都把缓冲区中的数据全部发出去?
谢谢。
...全文
687
9
打赏
收藏
tcp socket每次将发送缓冲区中的数据全部发出去?
redhat6.0,用哪个函数,如何设置,可以使得send函数每次都把缓冲区中的数据全部发出去? 谢谢。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
niushitana
2015-12-24
打赏
举报
回复
学习了,收藏一下。
niushitana
2015-12-24
打赏
举报
回复
学习了,收藏一下。
niushitana
2015-12-24
打赏
举报
回复
学习了,TCP的传送机制好像讲开发的书都讲得不多。
jiqiang01234
2015-12-23
打赏
举报
回复
引用 5 楼 fengwanfengwan 的回复:
找到一个答案:setsockopt,使用TCP_NODELAY选项,使得只要缓冲区有数据,就立刻发送。
这是在双方网络通畅情况下才有效的
fengwanzk
2015-12-23
打赏
举报
回复
找到一个答案:setsockopt,使用TCP_NODELAY选项,使得只要缓冲区有数据,就立刻发送。
nswcfd
2015-12-21
打赏
举报
回复
同2楼,发送的速度还要看对端的接收速度。
常书
2015-12-17
打赏
举报
回复
楼主是不希望TCP分段发数据吗? 每次TCP发送的值跟服务器和客户端建立连接时,双方协商的最小MSS即TCP能发送的最大segment大小,可通过设置TCP_MAXSEG选项更改,服务端和客户端都要设置,然后双方send 的BUFF都小于设置的值,就不会被分段而会都全部发出去
jiqiang01234
2015-12-16
打赏
举报
回复
不可能。这是由tcp协议栈来控制的。tcp有窗口滑动机制,必须得保证对端的接收速度跟得上发送的速度,如果跟不上,发送端就会暂时阻止发送。
runsunlg
2015-12-15
打赏
举报
回复
试试禁用nagle算法,采用TCP_NODELAY选项?
linux
tcp
socket
的发送与接收缓冲区
应用程序可通过调用send(write, sendmsg等)利用
tcp
socket
向网络发送应用
数据
,而
tcp
/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用
数据
(
tcp
数据
报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送
数据
的速度存在差异,所以,一部分应用
数据
被组织成
tcp
数据
报之后,会缓存在
tcp
socket
的发送缓存队列
中
,等待网络空闲时再发送出去。同时,
tcp
协议要求对端在收到
tcp
数据
报后,要对其序号进行ACK,只有当收到一个
tcp
tcp
socket
的发送与接收缓冲区
1)应用程序可通过调用send(write, sendmsg等)利用
tcp
socket
向网络发送应用
数据
,而
tcp
/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用
数据
(
tcp
数据
报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送
数据
的速度存在差异,所以,一部分应用
数据
被组织成
tcp
数据
报之后,会缓存在
tcp
socket
的发送缓存队列
中
,等待网络空
面试题:非阻塞
tcp
socket
调用close时缓冲区未发送
数据
的处理逻辑
这个问题主要考虑两方面,close是否会阻塞调用?write写入的
数据
能否正确发送到对端? 经过实现验证: close之前已设置过非阻塞,所以会立即返回,如果
tcp
缓冲区还有
数据
需要发送,
数据
能够正确的发送到对端。 但有一点要注意:在发送的最后一个包会加FIN标志;如果另一端也要关闭发FIN时,本端就会发RST,因为本端的
SOCKET
已经关了。
如何获取
SOCKET
发送缓冲区
使用大小
问题描述:
socket
编程,发送少量
数据
时,send/write等发送函数会立即返回成功,发送的
数据
会存在
TCP
发送缓冲区
中
,依靠
TCP
协议栈自身的重传机制来保证该
数据
被接收端收到;我们的问题是 发送端应用程序 如何判断 少量
数据
已经成功发送到接收端? 解决思路:发送
数据
存在缓冲区
中
,我们判断
发送缓冲区
大小变化,即可获知发送是否成功;具体方法如下:发送
数据
后,获得已使用缓冲区大小buf,
tcp
socket
发送缓冲区
、接受缓冲区、滑动窗口协议之间的关系
原文:http://webseo8.net/newsinfo.aspx?type=0&id=220&page=0 点击打开链接 对于每一个
TCP
的
SOCKET
来说,都有一个
发送缓冲区
和接受缓冲区与之对应,下面举个例子说说
发送缓冲区
、接受缓冲区、滑动窗口协议之间的关系。 一、recv端 在监听套接字上准备accept,在accept结束以后不做什么操作,直接sle
Linux/Unix社区
23,217
社区成员
74,540
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章