繁体   English   中英

不同计算机上的Java套接字不起作用

[英]Java Socket on Different Machine Does Not Work

我在网上尝试了许多示例,其中之一是:http: //zerioh.tripod.com/ressources/sockets.html

所有服务器-客户端套接字示例在使用127.0.0.1进行测试时都可以正常工作

但是它永远不会在具有实际原始真实IP地址的两台不同的计算机上运行EVAR(在Java客户端上进行测试时,telnet上的“无法连接至主机”和“连接超时”-服务器程序仅等待连接)

注意:

  • 确保防火墙已关闭
  • ipconfig中的IP地址不起作用
  • 来自myipaddress.com的IP地址(与ipconfig没有任何原因完全不同)不起作用

我想念的是什么? 如果我只能解决这个问题...

尝试在0.0.0.0上绑定。 这告诉您的套接字接受本地可以接受的每个IP上的连接。

基于注释,其中提到了以下代码片段:

requestSocket = new Socket("10.0.0.5", 2004); // ip from ipconfig 

最好在构造函数中使用主机名而不是IP地址,因为带有String参数两参数Socket构造函数期望将主机名作为String而不是IP地址。 然后在提供的主机名上查找IP地址。

如果需要传递IP地址,请使用接受InetAddress作为参数两参数构造函数。 然后,您可以向InetAddress.getByAddress方法提供原始IP地址,如以下代码片段所示:

InetAddress addr = InetAddress.getByAddress(new byte[]{10,0,0,5});

通过字节数组指定参数时,您需要注意,因为字节是用Java签名的(-127至+128),并且超出此范围的数字(但IP地址的有效八位字节)可能必须使用Integer.byteValue来指定Integer.byteValue

最后,应该注意,指定客户端可见的远程计算机的IP地址非常重要。 在myipaddress.com上列出的IP地址可能是代理的地址,因为这是整个网络的公共IP,对于myipaddress.com上的主机服务器是可见的。 因此,您应该指定对您的计算机可见的远程计算机的IP地址,而不是myipaddress.com。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM