如何使用“C”在 Windows 中查找空闲 TCP 端口

Kri*_*ish 3 ip winapi tcp tcpclient tcpserver

我想要两个 Windows 应用程序,它们使用 Windows 套接字通过 TCP/IP 进行通信。在此,我希望我的程序自动选择可用的空闲端口来建立连接。

有没有办法使用 C 或 C++ 程序找到空闲 TCP 端口?

准确地说,我想自动检测服务器端的空闲端口,并让客户端知道相同的端口(用于连接到服务器)。

谢谢你的时间!

Rem*_*eau 5

我想自动检测服务器端的空闲端口

只需将bind()您的侦听 TCP 套接字连接到端口 0。操作系统将为您选择一个可用端口。然后您可以使用getsockname()来检索所选的端口。

让客户端知道相同的端口(连接到服务器)。

您必须将选定的 TCP 侦听端口发布到客户端可以在需要时查询的地方。

如果客户端和服务器位于同一网络子网上,一种简单的解决方案是让服务器在固定端口上打开一个单独的侦听 UDP 套接字,然后让客户端向该端口上的子网广播 IP 发送 UDP 广播。当服务器收到广播时,它可以向客户端发送指定 TCP 侦听端口的回复。然后客户端可以通过该端口连接到 TCP 服务器。