首页 > 解决方案 > bind() 是否修改 C 中的 sin_port?

问题描述

linux中的bind()函数可以修改它的参数吗?我问这个是因为 asin_port为 0 意味着操作系统将选择端口,我想在这个调用之后得到这个端口。

标签: cnetworkingposixsystems-programming

解决方案


不,它不会修改论点。相反,您使用getsocknameafter binding 来找出您获得的端口。

您还可以使用getsocknameafterconnect来获取本地端口分配与到远程主机的路由相对应的本地地址(如果您有多个地址)。这甚至适用于connect实际上不发送任何数据包而仅在逻辑上绑定地址的 UDP。


推荐阅读