WinSocks()で接続するノンブロッキング
-
23-08-2019 - |
質問
MSDN のによると、あなたがする必要はありこのように、非ブロッキングソケットを作成します:
unsigned nonblocking = 1;
ioctlsocket(s, FIONBIO, &nonblocking);
その後select()
のために書き込みfdsetにそれを使用。接続が成功したかどうかを確認するには、ソケットが書き込み可能であるかどうかを確認する必要があります。しかし、MSDN-記事がエラーをチェックする方法については説明しません。
connect()
はのないの成功、そしてそのような場合には、の理由のそれは成功しませんでした?なかった場合は、どのように私は見ることができます
解決
あなたはgetsockopt()
でソケットエラーを確認してください。ここではスティーブンスからの抜粋は、(それはUnixのだ付与されたが、Winsockのは、似た何かを持っている必要があります)です。
if ( FD_ISSET( sockfd, &rset ) || FD_ISSET( sockfd, &wset )) {
len = sizeof(error);
if ( getsockopt( sockfd, SOL_SOCKET, SO_ERROR, &error, &len ) < 0 )
return -1;
} else {
/* error */
}
今error
があれば、あなたにエラー番号を与えます。
所属していません StackOverflow