【问题标题】:How to connect java socket to remote server socket如何将java套接字连接到远程服务器套接字
【发布时间】:2021-12-15 00:04:29
【问题描述】:

相关问题没有帮助,所以发布一个新问题。

我能够在本地网络上的两台设备之间建立连接。 但我想连接两台不在本地网络上的计算机。 (P2P)

如何让ServerSocket监听公共socket连接?

如何知道ServerSocket的公网IP地址,可以和远程Socket建立连接? 或者如何获取可以尝试的 IP 地址列表?

【问题讨论】:

  • 查看 torrent 的工作原理。需要已知的跟踪器或 DHT
  • 您的服务器在互联网上运行?还是在哪里?使用 ip 或主机名。
  • How to make ServerSocket listen to public socket connections? 让它听。不要将其绑定到地址。您的 Android 应用就是客户端。
  • 我在连接到不同网络的不同安卓设备上运行服务器和客户端。
  • 类似于您家中的网络。还有我家的网络?

标签: java android sockets tcp p2p


【解决方案1】:

如何让ServerSocket监听公共socket连接?

如果您侦听通配符地址 (0.0.0.0),那么服务器应该能够接受其所有 IP 地址上的连接。

  • 如果它有一个公共 IP 地址,那么另一个网络上的客户端应该能够连接......除非有网络问题或防火墙阻止连接或类似的东西。

  • 如果它没有公共 IP 地址,那么(通常)只有同一(私有)网络上的客户端可以连接到它……除非您设置某种复杂的中继方案。


如何知道ServerSocket的公网IP地址可以和远程Socket建立连接?

这取决于您的设备。检查文档。例如,在典型的 Android 手机上,您可以在设置中找到设备的 IP 地址;见 How to find IP address of Android smartphone/iPhone/iPad?

这假设您的设备具有公共 IP 地址。这可能是真的,也可能不是。见What is the difference between a public and private IP address

或者如何获取可以尝试的 IP 地址列表?

见上文。

但请注意,客户端(通常)无法找到服务器的公共 IP 地址,除非服务器通过(通常)将其与任何人都可以查找的 DNS 地址相关联来发布它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    相关资源
    最近更新 更多