|
良久前开发的 multiuser server 终于进入最后的阶段,过后就可以进入测试阶段了。
不过在这之前发现一个严重的问题——就是数据包。
由于会可能有 2 个或更多的数据同时在 pending buffer 里;也可能数据被分为几个数据包来发送,而数据包还没齐。
所以需要把它们分开或结合。
目前小章鱼是用特别符来区分一个数据的结束与否,如:
this is first message%this is second
遇到 % 是就断定为一个完整数据。
不过似乎有些微妙的问题(目前还搞不清楚……,觉得因该是 read buffer 的限定不足,无法配合断定方程)
想到的另一方法就是依指令来限定每个数据的长度,
不过这方法在扩充时似乎不怎么灵活。
不知各位是用何种方法?
(还是有更简单的方法来断定)
还有,就是对大数据,使用压缩值得吗?
-----------------------------------------------------------
哈哈哈,早上起身,找不到贴子,还以为夜里睡得迷糊,梦见自己起来发帖。
原来是发错地方了
不过在多人游戏开发也有用到吧。
如果不合适这里,麻烦版主操作一下。
[ 本帖最后由 sson 于 26-6-2006 06:56 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 28-6-2006 10:06 AM
|
显示全部楼层
这主题适合在此讨论,尤其是用于多人游戏或线上游戏。 |
|
|
|
|
|
|
|
发表于 28-6-2006 01:20 PM
|
显示全部楼层
通常我们都是使用<header>...<footer>来define 一个package 的开和关. |
|
|
|
|
|
|
|

楼主 |
发表于 28-6-2006 10:52 PM
|
显示全部楼层
白日梦 可是这里比应用软件研发区冷多了
exiang 盼了好久,你终于出现了,呵呵。
小章鱼目前也是用这种格式 <header> 为特殊指令码 <footer> 为指定结束码。
只是猜想有没有更简单的方法。由于小章鱼的程式每个数据(一个发送)都是单一指令,
全是单一的,没有混合的。 |
|
|
|
|
|
|
|
发表于 29-6-2006 09:48 AM
|
显示全部楼层
|
|
|
|
|
|
|

楼主 |
发表于 14-7-2006 11:43 AM
|
显示全部楼层
白大哥 没经验,也可以谈谈看法和想法,
有时候特殊的方式就是那些没有相关经验的人带出概念的呀。 |
|
|
|
|
|
|
|
发表于 14-7-2006 10:33 PM
|
显示全部楼层
原帖由 sson 于 28-6-2006 10:52 PM 发表
白日梦 可是这里比应用软件研发区冷多了
exiang 盼了好久,你终于出现了,呵呵。
小章鱼目前也是用这种格式 <header> 为特殊指令码 <footer> 为指定结束码。
只是猜想有没有更简单的方法。由于小 ...
再考慮數據包的時候, 有兩種可能
1. send / receive 的次數多, 每次資料少
2. 次數少, 每次資料大 ( 如果常常有 error 就會造成 resend 過多的浪費 )
當然, 壓縮對於大的數據比較有效
由於資料不一定會每一次都完整的收到
所以 <header> 及 <footer> 是必要的.
而處理方面, 每一次只處理 <header> data <footer>
而 <footer> 之後的資料保留給下一次再處理
例如
#1 <header> command 1, param 1, 2, 3 <footer><header> command 2,
處理 command 1
#2 param 1, 2 <footer><header> command 3 param 1 <footer>
處理 command 2
#3 --- no data
處理 buffer 裏的 command 3 |
|
|
|
|
|
|
|

楼主 |
发表于 16-7-2006 05:50 PM
|
显示全部楼层
flashang 谢谢你。
目前应该算解决了。
基于一些考虑,小章鱼目前使用混合式:长度限定 + 自由长度
忘了说,小章鱼做的是类似 FTP Server 的 File Server |
|
|
|
|
|
|
| |
本周最热论坛帖子
|