tcp socket每次将发送缓冲区中的数据全部发出去?

fengwanzk 2015-12-14 11:36:48
redhat6.0,用哪个函数,如何设置,可以使得send函数每次都把缓冲区中的数据全部发出去?
谢谢。
...全文
651 9 打赏 收藏 转发到动态 举报
写回复
用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选项?

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧