游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5525|回复: 5

一个TCP分包的问题

[复制链接]

32

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2010-9-26 09:42:00 | 显示全部楼层 |阅读模式
一个TCP分包的问题,请问下各位高手,大家在TCP分包的时候是怎么处理的呢,我的想法是让发送端每次发小于MTU的数据,但是每个客户端的MTU是不是一样的呢,最后还是想请教下各位在TCP分包,组包时的经验,谢谢

180

主题

3511

帖子

3520

积分

论坛元老

Rank: 8Rank: 8

积分
3520
发表于 2010-9-26 12:26:00 | 显示全部楼层

Re:一个TCP分包的问题

这也需要处理吗?
不都是自动的吗?

119

主题

1367

帖子

1393

积分

金牌会员

Rank: 6Rank: 6

积分
1393
发表于 2010-9-27 00:08:00 | 显示全部楼层

Re: 一个TCP分包的问题

我记得一个mtu大概有1.5K的限制,一般一个io投递的包大小不要超过1K吧,不然就要拆分了,网络方面经验不足
等后面的高手给解释把

2

主题

7

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2010-9-28 09:45:00 | 显示全部楼层

Re:一个TCP分包的问题

分包、组包不都是TCP自己做了吗,对应用来说应该是黑盒的。
至于MTU,会选择最小的MTU作为上限

0

主题

1

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-10-17 21:25:00 | 显示全部楼层

Re: 一个TCP分包的问题

对于TCP通讯来说,分为异步通讯和同步通讯,
    如果是同步通讯,发送出去后,一般要对方回应后才会发送下一个包,如果你要发送的包大于1.5K, 可以拆发成两个包发送,发送两次,对方在连续接到到两个包后(因为第一个包中已指明整个包长度将大于1.5K,所以如果接到第一个包时,对比总长度表示没有接收完成,处理时应等待接收到第二个包再回应说明整个包已接收完成。
    如果是异步通讯,一般采用发送出去不等待回应的模式,如何区分:可以采用增加包头志位和包结束标志的方法完成。如定义包头0xffee,为避免出现数据中也有此标志,可以对整个包增加CRC32校验,可以确定包的开始标准不会出错,待接收多个包后重新组装即可。

0

主题

7

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2010-10-21 12:41:00 | 显示全部楼层

Re:一个TCP分包的问题

mtu 是物理介质的属性
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-3 05:23

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表