【发布时间】: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 不同。
-
也可能有一两个防火墙在路上