我写了个简单的程序,C/S模式的,其中采用的是UDP协议,我用DatagramSocket定义了连接和端口,再用DatagramPacket定义了发送和接受的对象,在发送的对象里加入了对方的ip地址和端口号,除此以外,在通信方面就没有其他任何的设置了。
我跟我同学测试,当我们在同一个局域网内时能测试通过,能够收到对方发的数据。可是当我用教育网,而他用宽带时就不能收到对方的数据了,或者说5分钟内没收到对方的数据。
请问,这是什么原因?是网络的原因?还是我的程序需要进一步修改?怎么修改?谢谢各位了!
我跟我同学测试,当我们在同一个局域网内时能测试通过,能够收到对方发的数据。可是当我用教育网,而他用宽带时就不能收到对方的数据了,或者说5分钟内没收到对方的数据。
请问,这是什么原因?是网络的原因?还是我的程序需要进一步修改?怎么修改?谢谢各位了!
答:
1)若你与同伴在网络上直通,则直接通过UDP通信。
2)你的一方或你的同伴一方或双方都是通过网关与外界相通的。比如说:你的一方是通过网关:192.168.0.1 端口号1080上网的,则你在你的网络通信代码之前加上如下代码:
Properties p = System.getProperties();
p.setProperty("socksProxyHost", "192.168.0.1");
p.setProperty("socksProxyPort", "1080");
若你的同伴也是通过网关上网的,则也要进行相似的设置 就可以了。