我写了个简单的程序,C/S模式的,其中采用的是UDP协议,我用DatagramSocket定义了连接和端口,再用DatagramPacket定义了发送和接受的对象,在发送的对象里加入了对方的ip地址和端口号,除此以外,在通信方面就没有其他任何的设置了。
我跟我同学测试,当我们在同一个局域网内时能测试通过,能够收到对方发的数据。可是当我用教育网,而他用宽带时就不能收到对方的数据了,或者说5分钟内没收到对方的数据。
请问,这是什么原因?是网络的原因?还是我的程序需要进一步修改?怎么修改?谢谢各位了!

解决方案 »

  1.   


    答:
    1)若你与同伴在网络上直通,则直接通过UDP通信。
    2)你的一方或你的同伴一方或双方都是通过网关与外界相通的。比如说:你的一方是通过网关:192.168.0.1 端口号1080上网的,则你在你的网络通信代码之前加上如下代码:
       Properties p = System.getProperties();
       p.setProperty("socksProxyHost", "192.168.0.1");
       p.setProperty("socksProxyPort", "1080");
     若你的同伴也是通过网关上网的,则也要进行相似的设置 就可以了。
     
      

  2.   

    服务器端必须是公网IP或做端口映射,楼主可以找有公网IP或能进行端口映射的机器做server端