2

この(かなり古い) 記事で、著者は次のように述べています

「ポートブロッキング

ポート ブロッキングを使用すると、アプリケーションは、他のアプリケーションが指定された範囲内のポートに対して特定のバインドを実行するのを防ぐことができます。ポート範囲をブロックする場合、アプリケーションは、MaxUserPort 設定の値 (既定では 5000) + 1 から 49151 (サービス パックがインストールされていない Windows XP および Windows Server 2003 の場合) または65535 (Windows Server 2003 Service Pack 1 の場合)。ブロックされたポートの範囲内のポートへの既存のバインドがあってはなりません。Windows ソケットは、ブロックされた範囲内の最後のポート番号をハンドルとして返します。ブロックを解除する (ブロックを削除する) 場合、Windows Sockets は、ブロック解除要求と同じ左端を持つ範囲のブロックを解除します。」

これを読んで得た意味は、アプリケーションがこれを設定/設定解除するために使用できる API がいくつかあるということですが、そのようなものについてドキュメントを検索しようとして完全な空白を描画しました。また、ソケットプログラミングでそのような機能を見たことを思い出したこともありません日々。

Windows にそのような機能はありますか? もしそうなら、そのドキュメントへのポインタを心から歓迎します!

4

2 に答える 2

1

winsock API 自体にはそのような呼び出しはありませんが、LSP 機能にはあると思います。もう 1 つの (簡単だが汚い <3) 方法は、ブロックしたいすべてのポートに bind() することです。

于 2012-12-14T10:29:21.703 に答える
0

MaxUserPort レジストリ値 (Vista 以降で適用可能) によって、システム上の動的クライアント (使用可能な任意のソケットにバインド) に使用されるポートの範囲を設定できます。動的ポート範囲は、tcp および udp ソケットに設定できます。詳細については、次のリンクを参照してください。

MaxUserPort

KB929851

したがって、必要に応じて(許可する)範囲を設定できます

于 2012-12-14T11:20:22.230 に答える