免费注册 查看新帖 |

Chinaunix

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

socket接收数据粘连问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-06-08 14:47 |只看该作者 |倒序浏览
现在局域网内有一个server,两个CLIENT,CLIENT程序相同,运行机器不同,一个是SUN 880,一个是SUN 490,CLIENT和SERVER通信,SERVER一有数据就发给CLIENT,现在运行在880上的CLIENT收到的tcp包没有粘连,而480上的数据包经常粘连,不知为什么?

论坛徽章:
0
2 [报告]
发表于 2006-06-08 15:41 |只看该作者
除了和机器性能、网络情况有关外,是不是和tcp接收缓存大小有关呢,如果有的话,如何查看和设置缓存的大小

论坛徽章:
0
3 [报告]
发表于 2006-06-08 16:03 |只看该作者
小声的问一下,粘结是什么意思?

论坛徽章:
0
4 [报告]
发表于 2006-06-08 20:26 |只看该作者
socket接口是有缓冲的,因此应用层必须有协议。

论坛徽章:
0
5 [报告]
发表于 2006-06-08 23:51 |只看该作者
原帖由 nnnqpnnn 于 2006-6-8 16:03 发表
小声的问一下,粘结是什么意思?



同问!

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2015-12-09 06:20:00
6 [报告]
发表于 2006-06-09 00:27 |只看该作者
粘包一般出现每次发送的长度是不一致的数据报可能造成粘包,一般处理的就是发包的同时发送每次发送报的大小,接包方,根据发送方的大小来决定是否接受完毕!

比如首次发送“11111111111111111111"个字符,第二次发送“2222222222"字符,第三次发送“3333333333“个字符,如果第二次接受方使用sizeof(20*char)查堵来接受的话,就有可能接受的数据成为"22222222223333333333"
我也经常出现这种问题
赫赫

论坛徽章:
0
7 [报告]
发表于 2006-07-02 15:16 |只看该作者
我也碰到过这样的问题,最后用每个包加长度来分解包。
如果包比较大的话,就不会存在粘包了。现在我看来可能是tcp/ip的nagle算法导致的,希望有人能做个测试。

论坛徽章:
0
8 [报告]
发表于 2006-07-02 19:49 |只看该作者
楼上的和楼上的楼上对于tcp的理解都错了!
所谓的粘包是你们捏造出来的一个混淆视听的概念,在tcp里这个概念根本不应该存在,在我n年前开始写网络程序的时候,也被你们这样说法所蛊惑。tcp就是一个流式传送,在每次发包时写进包长大可不必,也是大错特错的理解。区分粘包和分包不是在你接收包的时候来判断,应该连接以前接收的包数据来判断该在哪里分割包,这需要一个应用层协议来规范。
lzcxh 该用户已被删除
9 [报告]
发表于 2006-07-02 22:17 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2006-07-02 22:40 |只看该作者

  1. 大量出售:
  2.          聚乙烯塑料颗粒
  3. 手机:
  4.          13791903779
复制代码

楼上是卖塑料的呀?怎么对编程感兴趣了?转行么?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP