如何使用' C'在Windows中查找免费的TCP端口

时间:2016-01-06 14:17:05

标签: winapi tcp ip tcpclient tcpserver

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

有没有办法使用C或C ++程序找到免费的TCP端口?

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

谢谢你的时间!

1 个答案:

答案 0 :(得分:3)

  

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

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

  

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

您必须在客户端可以在需要时查询它的位置发布所选的TCP侦听端口。

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