使用 IPC 如何告诉客户端服务器正在侦听哪个端口?

Posted

技术标签:

【中文标题】使用 IPC 如何告诉客户端服务器正在侦听哪个端口?【英文标题】:With IPC how to tell client which port the server is listening on? 【发布时间】:2014-04-07 16:01:48 【问题描述】:

当为 IPC 使用套接字时,您可以让系统选择一个随机空闲端口,如下面的问题所述:

On localhost, how to pick a free port number?

有一个规范,您将进程 ID 放在“.pid”文件中,这样您就可以轻松找到 apache 进程 ID 并以这种方式杀死它。

但是当操作系统选择一个随机端口供您监听时,交换端口号的最佳实践方式是什么?

【问题讨论】:

【参考方案1】:

要告知端口号,您可以使用任何其他传输机制,可以是共享磁盘上的文件、信鸽邮件、短信、第三方服务器、动态更新的 DNS 条目等。双方必须有共同点分享,然后他们可以交流。出于明显的原因,我在这里省略了端口扫描。

关于不是随机端口而是“浮动”端口号有一个有趣的方面:​​如果您不想保持恒定端口但可以在一定范围内选择监听端口,那么您可以使用计算实际端口号的算法基于日期或星期几或其他定期或可预测的信息。这样,客户端就知道在哪里查看服务器。

另一种选择是,在一个端口上开始通信期间,服务器和客户端将同意服务器将在何处等待客户端进行下一次会话。

【讨论】:

以上是关于使用 IPC 如何告诉客户端服务器正在侦听哪个端口?的主要内容,如果未能解决你的问题,请参考以下文章

text 如何知道哪个程序正在侦听给定端口?

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?

如何找出哪个进程正在侦听 Windows 上的 TCP 或 UDP 端口?

如何找出哪个端点导致了 SocketException,UdpClient

Linux下侦听端口被占用,怎么解决?

sh 检查哪个应用正在侦听端口