解决方案 »

  1.   

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

  2.   


    不好意思,没有看清楚,你用的是udp协议,upd协议应该不存在你说的这个问题啊。
    不过你的协议最好定义为双向的,例如客户端发送数据包后,服务器端收到后应该有一个回应,如果超时未收到回应的话,客户端认为发送失败,重新发送,重试一定次数仍然失败则认为服务端故障。
      

  3.   

    这是当然了
    UDP是不可靠连接,不保证不检测数据是否到达接收端,如果接收方还没有准备好你就开始发送数据,你的数据包在网络路由里乱跑,最好不知道跑哪里去了
      

  4.   


    不好意思,没有看清楚,你用的是udp协议,upd协议应该不存在你说的这个问题啊。
    不过你的协议最好定义为双向的,例如客户端发送数据包后,服务器端收到后应该有一个回应,如果超时未收到回应的话,客户端认为发送失败,重新发送,重试一定次数仍然失败则认为服务端故障。
    谢谢,我试了重写client端,每次重新去new DatagramSocket(),发送完关闭socket,这样server就能在任何时候启动都能收到数据了。