在计算机上查找可用的网络端口

时间:2010-06-02 19:17:23

标签: c linux sockets

我正在尝试在linux中实现一个简单的FTP服务器(EFTP协议的变体)。当客户端连接并发送PASV命令时,服务器应使用端口号进行响应,以便客户端可以连接到该端口以传输文件。服务器如何选择端口号?我是否需要遍历1024到65535之间的所有端口,直到找到进程可以绑定的端口为止? 我知道调用bind()和0作为端口会自动选择要绑定的端口,但是我怎么知道选择了哪个端口?

非常感谢。

1 个答案:

答案 0 :(得分:7)

您可以让系统选择一个,并使用0作为端口号,然后拨打电话 getsockname()检索其地址 - 包括端口号。