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

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

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

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

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

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

现在TCP应用这么广泛,应该有更好的机制来保障通讯的稳定性
请各位赐教……
...全文
234 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
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正在运行中出现问题,导致传来的数据不能接收。引起丢包现象。

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

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