0


1

ブロッキング選択呼び出しを終了します!

私は、ソケットを作成し、接続を行い、その後、永久にブロックするソケットを渡すことで選択APIを呼び出すサードパーティAPIを呼び出しています。

ソケットにアクセスできません。 ソケットにアクセスせずにアプリケーションからselect呼び出しを実行できる方法はありますか?

私のプラットフォームはWindowsです。

1 Answer


1


使用するソケットまたは選択セットにアクセスできない限り、通常これを行うことはできません。

ソケットにアクセスできる場合は、 `closesocket()`を使用して閉じます。 読み取りセットにアクセスできる場合は、そこにダミーソケットを挿入し、前のポイントを参照してください。

これらのいずれも機能しない場合は、次のいずれかを実行できます。

  • これが別のスレッドで発生することを確認します。このスレッドは後で削除できます (ただし、これによりかなり明らかなリソースリークが発生します)

  • 次のようなものを使用して選択をオーバーライドしようとします Detours(非推奨)

  • 敗北を認める。