【问题标题】:Pinging computers on a networkping 网络上的计算机
【发布时间】:2011-04-08 01:46:43
【问题描述】:

我是一名大学研究员,正在尝试一些业余的 java2 编程。

我一直在学习 KnockKnockServer/Client Java2 教程,以使用 Java 套接字将字符串从一个程序发送到另一个程序。

http://download.oracle.com/javase/tutorial/networking/sockets/clientServer.html

可以在那里下载完整的源代码,它编译得很好,是使用 IP 让两个程序在 Java 中相互通信的一个很好的例子。

当我使用在同一台机器上运行的服务器和客户端并且机器名称为“localhost”时,这很好用

kkSocket = new Socket("localhost", 4444);

当我在带有 InetAddress 的家庭网络上使用它时,它也可以在家里工作:

InetAddress myaddress = InetAddress.getByName("129.11.138.64");
kkSocket = new Socket(myaddress, 4444);

但是,当我尝试在大学机器上执行相同操作时,它不起作用,因为它们位于某种代理后面,尽管两台机器彼此相邻并插入相邻的以太网端口。

问题:

当我无法完全控制它们所在的网络时,如何让两台机器相互通信?我什至无法弄清楚如何让他们互相ping通。我访问了“www.whatismyip.com”以获取每台机器的外部 ip,但这不起作用,我查看了下一个工作适配器 ip 和它们所在的网关,但我仍然无法获得它们互相交谈。

任何想法。

谢谢!

【问题讨论】:

  • 两台机器的IP地址是多少?网络上的机器会有自己的 IP,这些 IP 与连接到外部网络的接口的 IP 不同。
  • 也可能有一两个防火墙在路上

标签: java sockets ip


【解决方案1】:

在我看来,您的网络正在阻止端口 4444 上的流量。请尝试其他端口,或确认允许端口 4444。

【讨论】:

    【解决方案2】:

    这个问题有几个不同的部分:

    1) 两台机器可以互相连接吗?

    您可以使用 Windows 和 *nix 中都可用的“ping”命令从命令行进行测试。 Ping 测试与指定机器的连接是否存在以及是否可靠。

    2) 可以过滤路由吗?

    仅仅因为您可以 ping 一台机器,并不意味着它们之间没有防火墙或代理。您可以使用“tracert”命令找到两台机器之间的路由。路线中的步骤越多,可能会阻止信号的事情就越多

    3) Java 有防火墙吗?

    仅仅因为它已安装,并不意味着它具有开放的网络访问权限。尝试获取一些 URL 或类似的,以查看 Java 是否具有网络连接。

    4) 端口是否被阻塞?

    可以通过两种方式阻止端口:其他应用程序正在使用它,或者防火墙正在限制侦听端口。如果是前者,Java 将无法将 Socket 附加到端口。如果是后者,请尝试不同的端口。没有什么可以阻止您同时运行 10000 个客户端并查看是否可以连接到其中的任何一个。

    5) 你如何在 Java 中做到这一点?

    Ping 可以通过 InetAddress.isReachable() 实现。

    6) 我应该对刚刚出现的愤怒的网络管理员说什么?

    “我不是端口和网络扫描!老实说!”寻找可用端口是一项基本的黑客操作。一些工作场所有自动工具来检查它,并将其视为不合适的。

    【讨论】:

      【解决方案3】:

      即使我无法在我的工作场所 ping 两台机器。

      您需要更改网络首选项或尝试以下操作:
      (针对 IE 的说明) 转到工具-> 互联网选项-> 局域网设置-> 高级。
      向字段添加例外:“请勿对以下开头的地址使用代理服务器:”
      输入网络 ip 起始编号,例如,如果您的网络添加了以 10.--.--.- 开头的 ip,请在字段中写入 10.*。

      【讨论】:

        【解决方案4】:

        您需要确保每台机器都知道局域网上对方的私有 IP 地址(请参阅 ipconfig 或 ifconfig 命令)。每次设备连接到 LAN 时,它都会(几乎)发生变化,有时甚至在它们连接到 LAN 时也会发生变化。

        www.whatismyip.com 不会帮助您,因为它只会为您提供最接近该服务器的路由器/NAT 的公共 IP 地址。不能保证它也是最接近您的设备的设备。即使是这样,这些信息也毫无用处,因为您(通常)无法预测 NAT 将如何将您的私有 IP 地址转换为公共 IP 地址。

        即使您可以“猜测”该信息,路由器/NAT 也有可能不允许您在其后面使用此转换(即在 LAN 上)。

        总而言之,请确保您使用分配给设备的正确私有 IP 地址,并确保没有路由器或防火墙阻止所考虑端口上的流量。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-09-22
          • 2011-04-11
          • 2013-08-26
          • 2021-12-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多