在网络上ping计算机

在网络上ping计算机

问题描述:

我是大学的研究员,我正在尝试一些业余java2编程。在网络上ping计算机

我一直在努力通过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和它们所在的网关,但仍然无法获取它们互相交谈。

任何想法。

谢谢!

+0

这两台机器的IP地址是什么?网络上的机器将拥有自己的IP,这些IP将与连接到外部网络的接口的IP不同。 – mdm 2011-04-07 15:22:12

+0

也可能有一两个防火墙 – DHall 2011-04-07 15:24:19

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

1)可在两台机器连接到对方?

您可以使用Windows和* nix中提供的“ping”命令从命令行对此进行测试。 Ping测试连接到命名机器的存在性和可靠性。

2)路线是否可以过滤?

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

3)Java是否受到防火墙限制?

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

4)港口是否被封锁?

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

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

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

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

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

这听起来像您的网络阻塞端口4444上的流量。尝试不同的端口,或确认端口4444是允许的。

即使我不能在我的工作场所ping两台机器。

您需要更改网络偏好或尝试以下操作:
(IE浏览器指令) 进入工具 - > Internet选项 - >局域网设置 - >高级。
添加例外场:“不要使用地址的代理服务器开头:”
进入网络IP起始数字,例如,如果你的网络已经增加了IP 10起 - - .--写。 10. *在现场。

你需要确保每一台机器都知道在局域网上对方的私有IP地址(请参阅使用ipconfig或ifconfig命令)。每次在局域网上连接设备时都会改变(几乎),有时甚至会在局域网上连接设备。

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

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

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