sockt(tcp)异步send一个很奇怪的问题

q332010372 2015-12-24 11:58:31
用异步sockt ,TCP流方式发送30+MB的数据,client / server 的发送、接收缓冲区都是默认8KB,调用 send 直接返回30+MB,完全send完。按照send函数的解释,异步方式如果缓冲区不够的话,不是返回填充到缓冲区的字节数吗?明显是填充不了30+MB的数据的,可是为什么能直接返回30+MB写完呢?
...全文
140 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcboyxhy 2015-12-24
  • 打赏
  • 举报
回复
$ sysctl net.ipv4.tcp_wmem
net.ipv4.tcp_wmem = 4096	16384	4194304
默认值是可以超过的,只要不超过最大值,我的系统里最大值默认是4M,不过我见过有人调到64M的
赵4老师 2015-12-24
  • 打赏
  • 举报
回复
《TCP IP协议详解卷一:协议》
q332010372 2015-12-24
  • 打赏
  • 举报
回复
问题写的不够详细,再写一下 异步sockt,client / server 两端的接收、发送缓冲区都是8KB,调用 send 一次发送30+mb的buf, send 返回值为30+mb,而不是send函数所说的那样返回error、1-8kb的数。
q332010372 2015-12-24
  • 打赏
  • 举报
回复
引用 1 楼 pcboyxhy 的回复:
$ sysctl net.ipv4.tcp_wmem
net.ipv4.tcp_wmem = 4096	16384	4194304
默认值是可以超过的,只要不超过最大值,我的系统里最大值默认是4M,不过我见过有人调到64M的
不是,我的意思是我用异步SOCKET,send一个超大的buf,缓冲区大小是8kb,按照 send 函数的解释,要不返回error,要不就返回1-8KB的数,但是奇葩的返回了30+mb的数

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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