获取UDP套接字的随机端口

rab*_*mar 12 c sockets

我需要创建一个程序,通过UDP套接字与同一台计算机上的其他程序进行通信.它将从stdin读取命令,其中一些命令将使其在不停止执行的情况下发送/接收数据包.我已经阅读了一些信息,但由于我不熟悉套接字编程并需要快速完成,我有以下问题:

  1. 我需要获取一个随机的未使用端口供程序监听,并保留它以便其他程序可以与此通信,并且该端口不会被其他程序保留.我还需要将端口号存储在变量上以备将来使用.
  2. 由于通信是在同一台机器上的进程之间,我想知道我是否可以使用PF_LOCAL.

此外,欢迎使用这种套接字的设置的代码示例,以及发送/接收字符串的示例.

Rem*_*eau 22

调用bind()指定端口0.这将允许操作系统选择未使用的端口.然后,您可以使用它getsockname()来检索所选端口.

  • 它是随机的,因为在绑定成功之前你不会知道选择哪个端口.绑定到端口0允许操作系统选择第一个可用的未使用端口.如果`bind()`成功,你就可以拥有一个只由你和其他人使用的端口.你声明的要求并不要求它真正随意地持续,只是独一无二,而且它会是. (3认同)