2

这篇(相当旧的)文章中,作者指出:

“端口阻塞

端口阻塞允许应用程序阻止其他应用程序对指定范围内的端口执行特定绑定。阻止端口范围时,应用程序必须选择介于 MaxUserPort 设置值(默认为 5000)+1 和 49151(对于未安装服务包的 Windows XP 和 Windows Server 2003)之间的连续端口号范围,或者65535(适用于 Windows Server 2003 Service Pack 1)。在被阻止的端口范围内,不应存在与端口的现有绑定。Windows 套接字返回阻塞范围内的最后一个端口号作为句柄。解除阻塞(删除块)时,Windows 套接字解除阻塞与解除阻塞请求具有相同左边缘的范围。”

我从阅读这篇文章中得到的暗示是,应用程序可以使用一些 api 来设置/取消设置它,但我已经完全空白,试图搜索任何此类东西的文档,我也不记得在我的套接字编程中看到过这样的功能天。

Windows 中是否有这样的功能,如果有,将非常感谢指向它的文档的指针!

4

2 回答 2

1

winsock API 本身没有这样的调用,但我相信LSP 特性中有。另一种(简单但肮脏的 <3)方法是将 bind() 绑定到您想要阻止的所有端口。

于 2012-12-14T10:29:21.703 回答
0

您可以通过 MaxUserPort 注册表值(从 Vista 开始适用)设置将用于系统上动态客户端(绑定到任何可用套接字)的端口范围。可以为 tcp 和 udp 套接字设置动态端口范围。以下链接中的更多详细信息:

最大用户端口

KB929851

因此,您可以根据需要设置范围(允许)

于 2012-12-14T11:20:22.230 回答