2011-11-15 16 views
1

を受けるCAsyncSocketクラス、ドキュメントは言う:は、だから、()の戻り値

http://msdn.microsoft.com/zh-cn/library/ct7d990b(v=VS.80).aspx

「接続がクローズされている場合はリターンを受信したバイト数を受信し、それが0を返します。」

データがまったくない場合、関数が何をブロックしていないという事実を考えると、

データがないか、切断されたために0が返されたかどうかをどのように判断できますか?

答えて

0

データがない場合、関数は0を返しません。代わりに、をGetLastError() == WSAEWOULDBLOCKと返します。

+0

エラーがない場合でもソケットがSOCKET_ERRORを返す場合を除き、まだ到着していないためデータがない場合は意味があります。 – Lishi

+0

はい。非同期ソケットを使用している場合、 'GetLastError()== WSAEWOULDBLOCK'は実際にはエラーではありません。 – JosephH