套接字动态绑定到缩小范围



我有一个在虚拟机中运行的C++服务器套接字。我已经为服务器套接字正在侦听的端口启用了端口转发。但是,由于动态绑定,我不知道将在哪个端口上进行通信。虚拟机中的操作系统接受以下范围内的动态绑定:

cat /proc/sys/net/ipv4/ip_local_port_range 
32768   61000

有没有一种方法(例如绑定/接受的参数),我可以向我的服务器套接字指定他必须将此范围减少到几个端口,即:[35000 35010]

干杯

侦听服务器套接字必须绑定到特定端口才能接受客户端连接。 在大多数平台上,您可以将套接字bind()到端口 0,它将绑定到随机可用端口。 但它仍绑定到特定端口。

不能将套接字绑定到多个端口的范围。如果需要侦听多个端口,则必须为每个端口创建一个单独的侦听套接字并单独bind()它们(即端口 35000 上的一个套接字、端口 35001 上的一个套接字、端口 35002 上的一个套接字,依此类推,直到端口 35010)。

也不能将套接字绑定到给定范围内的可用端口。只能绑定到特定端口或端口 0。如果您需要侦听给定范围内的可用端口,则必须循环调用 bind() ,从最低端口开始并按顺序尝试每个端口,直到bind()成功或范围用尽。

最新更新