掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ソケット通信でタイムアウトするには? (ID:56014)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
cocomoです。 もともとLinuxで動いていたものをVC++.NET へのコンバージョン作業をしています。 ソケット通信の処理を行っていますが うまくいかないところがあるので宜しくお願いします。 クライアント側から send処理を1回送信しています。 サーバ側では以下の処理しています。 while(1){ iRet = select( 0, &fdsRead, NULL, NULL, ptTimeOut ); if ( iRet == 0 ){ Sleep( 2000 ) ; continue; } else if( iRet < 0 ){ Sleep( 2000 ) ; continue; } recvをする関数を呼んでいます。 Sleep( 300 ) ; } クライアントからsendする前はselectの戻り値が0になって いて正常です。 クライアントからsendするとselectの戻り値が1以上になって recvをする関数を呼んでいます。 recvする関数を呼んで処理した後 また、select関数がよばれたとき selectの戻り値が1以上になっていて recvが呼ばれたときに固まってしまいます。 recvした後に何か処理が必要なんでしょうか? 現状の受信関数はrecvで1バイトずつ受信して "\r\n"がでたらrecvを呼ぶ関数を終了するように設計されています。 たとえばクライアント側で "ABCDEFGHIJK\r\n" と言う文字列を送信したとすると サーバ側では 13バイト受信するんですか? \nのあとにもう1バイト受信しないと ダメだと思うのですか間違ってますか? どなたか宜しくお願いします。 開発環境は Windows2000 VC++ .NET 2003 です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.