社区
Linux/Unix社区
帖子详情
tcp socket每次将发送缓冲区中的数据全部发出去?
fengwanzk
2015-12-14 11:36:48
redhat6.0,用哪个函数,如何设置,可以使得send函数每次都把缓冲区中的数据全部发出去?
谢谢。
...全文
756
9
打赏
收藏
tcp socket每次将发送缓冲区中的数据全部发出去?
redhat6.0,用哪个函数,如何设置,可以使得send函数每次都把缓冲区中的数据全部发出去? 谢谢。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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选项?
socket
之send与
发送缓冲区
大小的关系
关于send函数在发送的
数据
长度大于
发送缓冲区
大小,或者大于
发送缓冲区
剩余大小时,
socket
会怎么反应。参见这篇博客的两种说法http://blog.csdn.net/gukesdo/article/details/7295592 自己做了个测试,服务器只起
socket
在侦听,不recv, 也不send. //ubuntu10.04 32bit #include #include
TCP
滑动窗口/
TCP
接收和
发送缓冲区
/内核sock接收和
发送缓冲区
一个
socket
在内核
中
有两个缓冲区,分别为接收和
发送缓冲区
。 struct sock { …… struct sk_buff_head sk_receive_queue;—-接收队列 struct sk_buff_head sk_write_queue;——发送队列 …… }; 2.
socket
编程
中
可以通过以下API设置:setsockopt
Socket
发送缓冲区
接收缓冲区快问快答
首先,我们要明确一下,通过
socket
发送
数据
之后(调用发送方法),
数据
并不是会直接发送到接收方。整个过程简略图如下:最终
数据
发送是要通过网卡的,但是
socket
没法直接将
数据
发送到网卡,所以只能先将
数据
发送到操作系统
数据
发送缓冲区
。然后网卡从
数据
发送缓冲区
中
获取
数据
,再发送到接收方。
socket
接收
数据
,也不是直接从对端获取的。整个过程简略图如下:首先接收方机器网卡接收到发送方的
数据
后,先将
数据
保存到操作系统接收缓冲区。...
TCP
接收/发送滑动窗口与内核接收/
发送缓冲区
之间的关系
转自:http://blog.csdn.net/yusiguyuan/article/details/28625129?utm_source=tuicool&utm_medium=referral 在有关
TCP
连接的很多配置
中
,有很多选项有的配置 net.ipv4.
tcp
_rmem:这个参数定义了
TCP
接收缓冲(用于
TCP
接收滑动窗口)的最小值、默认值、最大值 net
深入理解
socket
中
的recv函数和send函数
一、函数原型 **·**recv函数用于
socket
通信
中
接收消息,接口定义如下: ssize_t recv(int
socket
, void *buf, size_t len, int flags) 参数一:指定接收端套接字描述符; 参数二:指向一个缓冲区,该缓冲区用来存放recv函数接收到的
数据
; 参数三:指明buf的长度; 参数四:一般置为0; 返回值:失败时,返回值小于0;超时或对端主动关闭,返回值等于0;成功时,返回值是返回接收
数据
的长度。 **·**send函数用于
socket
通信
中
发送消息,
Linux/Unix社区
23,224
社区成员
74,535
社区内容
发帖
与我相关
我的任务
Linux/Unix社区
Linux/Unix社区 应用程序开发区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章