• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

C#与Flash客户端TCP通讯的丢包问题

sq0421 2009-10-23 12:43:01
服务端C#
客户端Flash AS3
TCP通讯

有个非常麻烦的问题,丢包

在网上找来找去,解决方案一般都是说用包号+回包的方式。
这种方式用起来是比较稳妥,比如斗地主,麻将等游戏,就算网络状况很差,因为有补充包发送,所以一般情况下不会有问题。

这种机制的问题是——慢
服务端用一个for循环,连续发送200个包
客户端接收到全部数据包的时间可能要5、6秒甚至更长

如果不用这种包号+回包+补充包的方式
同样服务端用一个for循环,连续发送200个包
客户端会丢失将近1/3的包,甚至更多。

现在TCP应用这么广泛,应该有更好的机制来保障通讯的稳定性
请各位赐教……
...全文
169 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sq0421 2009-10-24
还有其他更好的建议么?
回复
LutzMark 2009-10-23
TCP不会丢包,应该是代码问题
以前的做法是把包容量减小或增大发包间隔

或者用这篇文章的办法做验证收取
http://www.csharpwin.com/csharpresource/1135.shtml
回复
sq0421 2009-10-23
[Quote=引用 3 楼 builderc 的回复:]
你的包是怎么定义的,你的接收端是如何处理包的?
[/Quote]
包的定义
包长:包头|协议……,
例如
6:1|ABCD,
8:2|EFGHIJ,
客户端收到包之后,进行累加
经过粘包和断包处理
最后得到ABCD,EFGHIJ去执行
回复
trentliu 2009-10-23
你的包是怎么定义的,你的接收端是如何处理包的?
回复
ruffianly 2009-10-23
好问题!顶起来!
回复
mjp1234airen4385 2009-10-23
不好整,和你的程序有关系,也许Flash正在运行中出现问题,导致传来的数据不能接收。引起丢包现象。
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2009-10-23 12:43
社区公告

让您成为最强悍的C#开发者