【问题标题】:Java computer to computer connection?Java计算机到计算机的连接?
【发布时间】:2012-03-25 08:39:09
【问题描述】:

是否有可能让两台计算机通过套接字相互连接而无需使用 Java 中的任何服务器?如果是这样,怎么做?我只看到了服务器是永久的服务器-客户端连接的示例。

例如:

1. 2 people, person A and person B, want to connect using this application
2. Person A runs application, clicks "host"
3. Application hands person A a code (IP+port?) and begins listening.
4. Person B clicks "join" and types in code.
5.  Person B's computer sees Person A's computer and they connect. Person A accepts connection.

我从来没有真正理解这一点。如果这是一个不好的问题,请原谅我。

【问题讨论】:

    标签: java tcp port connect tcp-ip


    【解决方案1】:

    在您的场景中,A 的 PC 将充当服务器,B 的 PC 将充当客户端。即使只是暂时的,A 正在侦听连接这一事实意味着它正在充当服务器。

    【讨论】:

    • 好的。所以你只要找到你的外部IP,监听端口xxxx,然后给他们发送代码IP:port,就没有异议,只要客户端正确处理?
    • 根据 A 和 B 的位置,可能需要进一步考虑。如果 A 和 B 在同一个网络上,A 可以只通告本地 IP。但是,如果它们不在同一个网络上并且正在进行 NAT 转换(A 和 B 都有外部 Internet IP),那么您可能毕竟需要一台服务器。没有服务器就没有简单的方法来获取您的外部 IP,除非它是静态的并且您事先知道它。
    • 我想我会创建一个与您的 IP 相呼应的服务器。为什么没有一些官方的IP查找工具?
    • 问题是您正在尝试确定您的外部IP,这可能会因接收者的身份而异。例如,假设人 A 连接到他们的路由器,该路由器也连接到两个不同的网络 X 和 Y,这两个网络仅由 A 的路由器连接。 A 的路由器在这些网络中的每一个上都有不同的 IP。如果 B 在网络 X 上,那么他需要连接到网络 X 的 A 路由器的 IP。如果 B 在网络 Y 上,他将需要网络 Y 的 A 路由器的 IP。
    • 嗯...这是有道理的。谢谢。
    【解决方案2】:

    根据定义,一方必须发起连接(即发出连接请求)。这意味着另一端必须打开服务器套接字才能接收连接。您可以通过实现客户端和服务器功能在双方使用相同的代码,并根据启动连接的用户承担适当的角色(服务器或客户端)。

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多