当前位置: 技术问答>java相关
Socket小问题(在线等)
来源: 互联网 发布时间:2015-06-13
本文导语: 我在做一个使用socket通信的小程序,但有点怪问题: 发送udp数据包时,本机上接收很正常,可就不能对外, 即程序无法 向另一台机器的客户端发送信息,反之又行! 实在不懂! 请指点 ... // 程序片断 ... String...
我在做一个使用socket通信的小程序,但有点怪问题:
发送udp数据包时,本机上接收很正常,可就不能对外, 即程序无法
向另一台机器的客户端发送信息,反之又行! 实在不懂! 请指点
... // 程序片断
...
String msg="测试";
byte[] message=msg.getBytes();
address=InetAddress.getByName("18.1.1.23");
DatagramPacket packet =new DatagramPacket(message,message.length,address,2323);
DatagramSocket socket=new DatagramSocket ();
socket.send (packet);
把上面的ip 改成 18.1.1.181(同一Lan中的机器),客户端就收不到数据了
但仍可以发数据包到Server....
18.1.1.23 是我本机,程序工作很正常.. why??????
发送udp数据包时,本机上接收很正常,可就不能对外, 即程序无法
向另一台机器的客户端发送信息,反之又行! 实在不懂! 请指点
... // 程序片断
...
String msg="测试";
byte[] message=msg.getBytes();
address=InetAddress.getByName("18.1.1.23");
DatagramPacket packet =new DatagramPacket(message,message.length,address,2323);
DatagramSocket socket=new DatagramSocket ();
socket.send (packet);
把上面的ip 改成 18.1.1.181(同一Lan中的机器),客户端就收不到数据了
但仍可以发数据包到Server....
18.1.1.23 是我本机,程序工作很正常.. why??????
|
应该是addr.getHostAddress()才是,如果还不行。
防火墙,杀毒工具关掉,再试一试。
防火墙,杀毒工具关掉,再试一试。
|
原因是在这:DatagramSocket socket=new DatagramSocket ();
在建立DatagramSocket对象时没有与 18.1.1.181地址相连,应为:
DatagramSocket socket=new DatagramSocket(2323,InetAddress.getByName("18.1.1.181");
socket.send(packet);
在建立DatagramSocket对象时没有与 18.1.1.181地址相连,应为:
DatagramSocket socket=new DatagramSocket(2323,InetAddress.getByName("18.1.1.181");
socket.send(packet);
|
通过服务器转发数据吧!应该是可以的.如果能够在代理服务器上执行一个对象就好办了,不过你有权限么?利用一个远程对象试试,因为你可以保存一个服务器根,也许可以引用处理过的结果.
最好把问题说的具体点呀!一起解决!
最好把问题说的具体点呀!一起解决!
|
是防火墙的问题吗 ?