如何将java套接字连接到远程服务器套接字

Posted

技术标签:

【中文标题】如何将java套接字连接到远程服务器套接字【英文标题】:How to connect java socket to remote server socket 【发布时间】: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 应用就是客户端。 我在连接到不同网络的不同安卓设备上运行服务器和客户端。 类似于您家中的网络。还有我家的网络? 【参考方案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 地址相关联来发布它。

【讨论】:

以上是关于如何将java套接字连接到远程服务器套接字的主要内容,如果未能解决你的问题,请参考以下文章

无法将客户端连接到 AWS 上的远程套接字

邮件发送失败。无法连接到远程服务器。套接字操作

套接字编程 - 如何连接远程地址

如何使用 Perl 通过 TCP 和 UDP 连接到远程机器?

无法使用 python 3 websocket 库连接到远程安全 web socket服务器

紧急求助,在传输数据时页面提示无法连接到远程服务器 System.Net.Sockets.SocketException