当前位置: 代码迷 >> J2SE >> udp socket server端必须要先开启吗?该怎么解决
  详细解决方案

udp socket server端必须要先开启吗?该怎么解决

热度:632   发布时间:2016-04-23 20:12:28.0
udp socket server端必须要先开启吗?
情况是这样的,我先把client端打开,开始发数据,是每隔一秒发送一次,然后再打开server端,但是server就卡在了ds.receive(dp);等待接收数据,但是一直都收不到。这时候我把client端关掉重开一下,server端就能收到数据了,想问下,这是正常的吗?server必须要先开启才能收到数据吗?
------解决思路----------------------
正常情况下当然要server端先开了。不过出现你这种情况说明你的客户端程序不够健壮,当客户端连接服务器端失败之后,应该隔一个指定的时间后重新连接服务端。

就像我们用qq,如果某天腾讯的服务器端出故障了,然后紧急修复,修复了之后,并不需要我们重启qq,qq也会自动连上。
------解决思路----------------------
引用:
正常情况下当然要server端先开了。不过出现你这种情况说明你的客户端程序不够健壮,当客户端连接服务器端失败之后,应该隔一个指定的时间后重新连接服务端。

就像我们用qq,如果某天腾讯的服务器端出故障了,然后紧急修复,修复了之后,并不需要我们重启qq,qq也会自动连上。


不好意思,没有看清楚,你用的是udp协议,upd协议应该不存在你说的这个问题啊。
不过你的协议最好定义为双向的,例如客户端发送数据包后,服务器端收到后应该有一个回应,如果超时未收到回应的话,客户端认为发送失败,重新发送,重试一定次数仍然失败则认为服务端故障。
------解决思路----------------------
这是当然了
UDP是不可靠连接,不保证不检测数据是否到达接收端,如果接收方还没有准备好你就开始发送数据,你的数据包在网络路由里乱跑,最好不知道跑哪里去了
  相关解决方案