关于java socket编程和局域网游戏的延迟

最近在学校学习了java的socket编程。我尝试用socket编写一个局域网的小游戏,是服务器端和客户端各控制一个小人即时地战斗。每隔10ms服务器端和客户端的线程会进... 最近在学校学习了java的socket编程。我尝试用socket编写一个局域网的小游戏,是服务器端和客户端各控制一个小人即时地战斗。
每隔10ms服务器端和客户端的线程会进行一次数据的收发。客户端发送给服务器端的数据,包括自己的小人移动和攻击的命令,服务器端把整个游戏显示画面的数据发给客户端。之后服务器端进行双方命令的处理,然后刷新画面。
我在自己的电脑上同时打开两个程序,一个作为服务器端,一个作为客户端。这时候运行游戏就很流畅。可是当我在宿舍的局域网中和同学尝试联机,游戏变得非常卡。大概每隔半秒左右游戏画面才进行了一次刷新。
我估计是局域网的延迟的影响,数据的交流没有按我设计的每隔10ms进行一次。于是我修改了数据收发的时间间隔,但是好像没有作用。哪怕是改成0,数据的交流也只能在半秒左右进行一次。可是我ping同学的ip,平均延迟最多也只有几十毫秒呀。
最后我试图把处理游戏画面和局域网数据传递的部门分开,于是在服务器端和客户端的画面显示是流畅了,
但是服务器端不能即时获得客户端发送的信息,总是有半秒的间隔,这导致我在服务器端观看客户端的小人的行为是跳跃式的,仍然达不到流畅的效果。
平时看到的局域网游戏和网络游戏,玩家之间的动作是非常流畅的。按理说局域网之间的延迟非常小,我程序的问题在哪里呢?
展开
 我来答
jicker1986
2013-09-06 · 超过52用户采纳过TA的回答
知道小有建树答主
回答量:162
采纳率:100%
帮助的人:103万
展开全部
局域网的延迟用socket来编程应该不会出现500ms的延迟。应该是数据传输的问题。
就是说你传输的数据量太大了,以至于消耗了500ms的时间。

网络游戏,客户端为什么那么大,因为所有的传输只是一些命令而已。。。而不会去传输图像。
服务器,只是做数据的处理和命令的传输,其他事情都放到客户端去。
匿名用户
2013-09-06
展开全部
逻辑问题。

“最后我试图把处理游戏画面和局域网数据传递的部门分开,于是在服务器端和客户端的画面显示是流畅了”

图像是预先在本地的了,除非是新的图像。数据的传递是很少的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pw2007pw
2013-09-06 · TA获得超过532个赞
知道小有建树答主
回答量:316
采纳率:66%
帮助的人:111万
展开全部
求代码啊,让我玩玩呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式