微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保在“私有”网络而不是“公共”网络上绑定和监听?

如何解决如何确保在“私有”网络而不是“公共”网络上绑定和监听?

在我的 C 程序 foo.exe 中,我使用 winsock2 创建了一个 TCP 套接字,bind() 到特定端口,listen() 用于传入连接。 Windows 10 弹出其防火墙对话框并询问我是否允许 foo.exe 接收连接 (a) 通过专用网络和 (b) 通过公共网络。有问题的“网络”是到设备的点对点链路本地以太网连接,所以我当然会认为它是私有的而不是公共的。但是,只有当我告诉防火墙允许“公开”时,数据才能通过。我想让它只在“私人”级别的解锁下工作。

程序员的接口(如果有的话)是什么来确定套接字是在 Windows 防火墙意义上的“私有”还是“公共”网络上?我希望可能会在 IP_ADAPTER_UNICAST_ADDRESS_LH 规范中看到一种查询方式,但我什么也没找到。

我知道 public/private 是网络的属性而不是套接字(甚至找到了一种通过 PowerShell here 更改它的方法),但我想我需要考虑这不在控制范围内我的程序。我会满足于我的程序能够为 GetAdaptersAddresses() 返回的每个适配器确定网络是公共的还是私有的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。