1

ノンブロッキング connect() を介して別のマシンのサーバーに接続しようとしています。

ただし、そうすると、Connect() は -1 を返し、WSAGetLastError() から WSAEWOULDBLOCK を受け取ります。

MSDN ドキュメントには次のように記載されています。 WSAEWOULDBLOCK がノンブロッキング SOCK_STREAM ソケットで connect を呼び出した結果として報告されるのは正常です。これは、接続が確立されるまでに時間がかかるためです (参照)。

問題は、常にエラーが発生し、サーバーが実行されていない場合でも connect() から -1 が返されることです。

提案されているように、私のソケットは SOCK_STREAM ソケットです。どうすればこれを修正できますか? connect() 呼び出しの後にタイムアウトを提供して、connect が接続を確立するのに十分な時間を確保する必要がありますか?

4

1 に答える 1

2

構造体を使用ConnectExして渡しOVERLAPPEDます。そうすれば、後で接続試行が終了したときに実際のステータスを取得できます。

于 2012-12-24T03:03:23.193 に答える