【问题标题】:Communicating between two different computers with TCP/IP使用 TCP/IP 在两台不同的计算机之间进行通信
【发布时间】:2015-02-08 19:43:44
【问题描述】:

我一直在研究如何使用套接字让两个java程序进行通信。

现在,在我经历的每个示例中,他们总是将“服务器端程序”放在“客户端程序”所在的同一台计算机上,当然 IP 集是 127.0.0.1 ,或简称为“本地主机”。

现在,我的问题是: 如果一个程序在计算机上,一个程序在另一个程序上,我如何通信这两个程序?

我尝试将 IP 设置为我的计算机连接到互联网时的 IP(我通过谷歌搜索“我的 IP 是什么”找到的),但这样似乎不起作用。 谁能更好地解释我如何使它工作?

【问题讨论】:

  • 是的,我知道,我的网络知识不是最好的。我实际上还没有上过那门课。我只是想知道是否有一种简单的方法可以解决这个问题。还是谢谢

标签: java sockets ip client server


【解决方案1】:

这些计算机需要位于同一网络上,或者它们的 IP 地址需要可以访问互联网。如果您在 Windows 中,您可以通过打开 cmd 窗口(按 windows 键 + R 然后键入 cmd)并运行 ipconfig 来找到本地 IP 地址。在 linux 上(也许它也适用于 Mac),您可以在终端中运行 ifconfig。如果您的计算机在同一个局域网上,您应该能够使用这些命令指示的 IP 地址。

如果它们不在同一个局域网上,则计算机之间的路由器可能具有阻止连接的防火墙策略。

【讨论】:

  • 感谢您的回答!我已经被告知了这一点,但这是我不明白的:他们说我必须将服务器程序放在我希望它运行的服务器上。但是,由于我没有在家里托管服务器,而我唯一的方法是购买外部服务器,我如何在该外部服务器上启动程序?因为我可能只能通过 FTP 连接到它。
  • @Sinth92 你不需要物理服务器。这就是为什么我告诉你复习 Networking 101。这是半开玩笑半真话:在网络上,你可以有一个网桥或路由器和两台电脑使用交叉电缆连接到这个组件,然后这两台电脑在一个 LAN 中,并且其中一个可以用作服务器,另一个可以用作客户端。您不需要在网络上购买外部服务器或类似的东西,您可以通过使用虚拟机使用单台 PC。再次,请查看网络上的一些网络,否则我建议您不要参与网络编程
  • 首先在同一台机器上运行您的服务器应用程序和客户端应用程序,使用127.0.0.1 进行通信,然后将它们移动到不同的机器并更新用于连接。
  • @LuiggiMendoza 我明白你在说什么,但我想做的是创建一个服务器应用程序,我可以通过互联网而不是局域网进行通信。
  • @Sinth92 那么你有两个问题:1)你的问题的描述没有表明那个目的如果我如何沟通这两个程序一个在电脑上,一个在另一台上? 2)您使用了错误的方法。对 Web 服务或点对点 (P2P) 进行一些研究。解释您通过互联网与两台电脑通信的真正目的,您将获得更准确的指导