游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2764|回复: 8

网游传输数据丢失如何处理

[复制链接]

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2005-9-19 22:03:00 | 显示全部楼层 |阅读模式
虽然采用TCP能够保证传输,但是由于操作系统内部缓冲有可能塞满,也就是说,服务器向客户端发送的数据可能丢失。
如何处理?有做过的请发言。

2万

主题

2万

帖子

6万

积分

论坛元老

Rank: 8Rank: 8

积分
66489
QQ
发表于 2005-9-19 22:43:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

不停的读,让它永远也塞不满。
以及给数据做校验和编号,丢了就重发。

37

主题

180

帖子

180

积分

注册会员

Rank: 2

积分
180
发表于 2005-9-19 23:27:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

其实封包的读取..有资料来就要丢入伫列了

不过还是有可能会有错误..这时就以后在修正吧
别把数值在client算

下一次 状态更新就回来了 (=.=|| 走一走跳回来..)

8

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-9-20 12:06:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

商用的大型网游,特别是RPG类型的,如何处理该问题的?

0

主题

16

帖子

41

积分

注册会员

Rank: 2

积分
41
发表于 2005-9-20 15:59:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

看来以上的人对TCP以及网络编程还不是一般话的不了解。you guys make me laugh!
谁跟你讲的操作系统内部缓冲区满了,TCP就开始丢失数据了?一旦用户数据通过socket交给了TCP协议层,TCP将管理剩下的所有传输细节,包括缓冲区管理,超时重传,流量控制,等等等等。如果本地外出TCP缓冲区满,在socket层会限制用户提交更多的数据(要么通过阻塞,要么非阻塞返回一个wouldblock错误值),如果远端进入TCP缓冲区满,TCP内部的流量控制(窗口协议)会告知发送TCP层不要发送更多的数据。只要网络本身没有问题,使用TCP将不用担心任何“丢包”的情况,如果网络延迟或瘫痪(包括目的机处理缓慢),TCP的超时机制会最终RST掉当前的连接。

如果使用UDP,那么你所说的所谓的丢包情况才会出现,你需要你自己的可靠传输控制协议。

建议你详细的阅读RFC文档。

(本人在欧洲从事操作系统和TCP/IP的底层实现工作)

8

主题

34

帖子

44

积分

注册会员

Rank: 2

积分
44
发表于 2005-9-20 17:03:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

TCP保证传输是没有问题的,但是TCP收到数据之后,由接收函数进行处理,消息有可能被缓冲,因此可能会丢失。该情况不是由于TCP引起的,而是由操作系统或者游戏本身产生的

44

主题

156

帖子

162

积分

注册会员

Rank: 2

积分
162
发表于 2005-9-20 18:14:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

5楼的说得很对,只有堵塞状态,,没有丢包现象。
所以才有所谓的压力测试,就是测试你最快能够处理掉多少个分包!

21

主题

120

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2005-9-20 18:59:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

5楼正解,是书上所注。

2

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2005-9-20 19:29:00 | 显示全部楼层

Re:网游传输数据丢失如何处理

压力测试是指服务器端的,不是客户端。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-12-27 22:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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