免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7676 | 回复: 6
打印 上一主题 下一主题

TCP/UDP连接的缓冲区问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-01-08 17:30 |只看该作者 |倒序浏览
跟各位大虾讨论一个问题:关于TCP/UDP连接的缓冲区的问题

使用socket编程的时候,不管是TCP的连接,还是UDP连接,系统都会分配一个缓冲区,当然也可以通过setsockopt函数来设置
缓冲区大小。

我的疑问是:假设TCP/UDP连接的 接收 缓冲区大小为8192字节,我第一包发送的数据长度为8000字节,现在缓冲区还有192字节的空间
现在TCP/UDP是否会接收数据呢?如果接收数据,如果数据长于192字节怎么办呢?如果不接收数据,那是怎么实现让发送方不发送数据的呢?

论坛徽章:
0
2 [报告]
发表于 2011-01-09 12:37 |只看该作者
UDP的发送缓冲只是可接受数据报的最大大小,没有实际的发送缓冲
TCP的话,如果是默认的阻塞IO,缓冲大小不够时阻塞。

论坛徽章:
0
3 [报告]
发表于 2011-01-10 13:40 |只看该作者
默认情况下TCP会接收192字节的报文,因为对端的发送窗口是接收端决定的;
UDP也会接受数据,接收缓冲区不足会导致直接丢弃数据;

论坛徽章:
0
4 [报告]
发表于 2011-01-10 19:59 |只看该作者
回复 2# bluewaterray


    那在UDP连接的时候,我用getsockopt命令得到的SO_SENDBUF以及SO_RCVBUF的值是什么?不是缓冲区大小吗?

论坛徽章:
0
5 [报告]
发表于 2011-01-10 20:01 |只看该作者
回复 3# hustchem


    直接丢弃数据是什么意思??
是指send(sockfd, sendbuf, len, ........)函数返回为负值,发送失败吗?

论坛徽章:
0
6 [报告]
发表于 2011-01-13 22:41 |只看该作者
跟各位大虾讨论一个问题:关于TCP/UDP连接的缓冲区的问题

使用socket编程的时候,不管是TCP的连接,还是 ...
whyliyi 发表于 2011-01-08 17:30



   1. 是会接受数据的。
  2.如果设备处理不过来导致缓冲满了,则会选择丢弃新进来的数据包知道有能力处理。
  3.对方收不到ACK会超时重传。

论坛徽章:
0
7 [报告]
发表于 2011-01-15 10:07 |只看该作者
回复 6# rainballdh


    恩,谢谢!!明白是怎么样的了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP