在网络上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和它们所在的网关,但仍然无法获取它们互相交谈。
任何想法。
谢谢!
有几个不同的部分,这一问题:
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地址,并确保没有路由器或防火墙阻止所考虑的端口上的流量。
这两台机器的IP地址是什么?网络上的机器将拥有自己的IP,这些IP将与连接到外部网络的接口的IP不同。 – mdm 2011-04-07 15:22:12
也可能有一两个防火墙 – DHall 2011-04-07 15:24:19