两台计算机在同一个IP上?

时间:2014-11-22 15:48:42

标签: networking client-server localhost

我在java中实现了一个Client-Server应用程序。服务器可以为多个客户端提供服务,我想测试一下,但我对网络的了解很少,我需要一种方法来测试我家的应用程序。

我有一个rooter,它连接了我的两台计算机。我在java中的“server”类使用给定端口上的本地主机(127.0.0.1)作为主机。

如果

,我该如何测试我的程序?
  1. Server.java正在计算机A上运行
  2. Server.java在3943端口上运行127.0.0.1
  3. 第一个Client.java正在计算机A上运行
  4. 第一个Client.java连接到3943端口
  5. 第二台Client.java正在计算机B上运行
  6. 第二个Client.java连接到3943端口
  7. 有什么想法吗?

4 个答案:

答案 0 :(得分:2)

为在同一台计算机上运行的客户端和服务器使用唯一端口。另外127.0.0.1是localhost(该机器的内部)。计算机B无法与计算机A上的127.0.0.1通信。如果所有应用程序或在同一台计算机上,则使用127.0.0.1。如果希望外部计算机能够与服务器通信,请使用计算机实际IP地址。

答案 1 :(得分:0)

如果你运行绑定到IP 127.0.0.1的服务器,你没有打开它到网络,只有你自己的计算机能够连接到它,访问127.0.0.1(环回IP地址)。 / p>

要将此服务器打开到网络,您必须执行以下两项操作之一:

  • 将其绑定到IP 0.0.0.0,以便所有网络都可以访问;
  • 将其绑定到特定的网络IP地址,以便它仅可用于该网络。

通常的做法是将其绑定到0.0.0.0,这更容易。

完成后,您将能够从其他计算机连接到计算机A上运行的服务器,但不能通过IP 127.0.0.1。这是环回地址,只能由计算机用于连接本身

计算机A可以使用IP 127.0.0.1连接到服务器,因为服务器正在其上运行,但其他网络计算机必须指定计算机A的网络IP地址。

您可以在网络适配器详细信息中找到您的IP地址,或在命令提示符(Windows)或ipconfig /all(Linux)上运行命令ifconfig

答案 2 :(得分:0)

当客户端和服务器位于同一台计算机上时,您所做的事情必须已经在运行。 要从另一台计算机连接,您需要找到服务器的“真实”IP地址。

如果您使用的是Windows,请在计算机A上打开命令shell,然后运行ipconfig。在unix / linux / mac上,运行ifconfig。 查找一个字符串,看起来像一个IP地址,但 127.0.0.1,如果你连接到网络,则必须有另一个字符串,可能看起来像10.0.0。或192.168。< 0或1> .. 在任何地方使用此地址而不是127.0.0.1

答案 3 :(得分:0)

完整的TCP连接由两个不同的端点组成。连接的服务器端是一个端点(它将在该端点上执行 listen )。当客户端创建它的连接端(客户端套接字)时,它将对服务器ip:port组合进行连接并获取一系列所谓的号码"短暂"端口。

连接的两端具有相同的IP地址这一事实并不重要 - 完整连接由两个不同的元素(地址:端口组合)定义。

FirstClient与服务器的连接将是ServerIP:ServerPort< - > Client1_IP:Client1_Port,SecondClient的连接将是ServerIP:ServerPort< - > Client2_IP:Client2_Port。网络层可以区分这些(它们是两个不同的连接流),并将流量路由到该流的适当发送方/接收方。