【发布时间】:2011-10-03 08:14:44
【问题描述】:
我是 Windows 网络的新手,我正在尝试找出我的套接字绑定到的端口号(C++、Windows 7、Visual Studio 2010 Professional)。它是一个 UDP 套接字,据我了解,使用以下初始设置应将其绑定到随机可用端口/地址:
sockaddr_in local;
local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = 0; //randomly selected port
int result = bind(clientSock, (sockaddr*)&local, sizeof(local));
//result is always 0
就使用此方法而言,它适用于发送数据或将其绑定到特定端口(将 0 替换为所需的端口号)。我需要的是随机绑定它,然后找出它绑定到哪个端口。有什么办法可以做到这一点吗?似乎“本地”结构包含“0.0.0.0”作为 IP 地址和“0”作为端口号。
感谢您的任何帮助!我很感激。
【问题讨论】:
-
re:为什么不生成一个随机端口——因为该随机端口可能已经被其他程序或服务使用了。
-
@MerlynMorgan-Graham 为什么不让系统完全做到这一点,这是它默认已经做的,没有它被使用的风险,然后使用提供的 API 来查找知道它是什么?
标签: c++ windows sockets binding port