0

WinSock の MS ドキュメントには、ソケットに設定したタイムアウトを取得できないと書かれています。

次の表に、getsockopt 関数でサポートされていない BSD ソケット オプションを表す optname の値を示します。
...
SO_RCVTIMEO int タイムアウトを受け取ります。...

しかし、素敵な.Netにはそのオプションがあることに気付きました:

http://msdn.microsoft.com/en-us/library/system.net.sockets.socket.receivetimeout.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1

ネイティブコードでそれを取得する醜い方法はありますか。?

4

2 に答える 2

2

.NET 設計は、Windows 実装の制限に基づいていません。ここには魔法はありません。とにかくそれを使用しようとすると、「不明、無効、またはサポートされていないオプションまたはレベルが getsockopt または setsockopt 呼び出しで指定されました」という SocketException がスローされます。Windows から直接送信されるメッセージ、WSAENOPROTOOPT winapi エラー コード。ただし、オプションをサポートする Linux、Apple、またはモバイル オペレーティング システムでプログラムが実行されている場合は、そうではありません。

いいえ、オプションがあるという事実は、それが機能することを約束するものではありません.

于 2013-10-12T16:58:13.137 に答える