ページ 11

ソケットへの連続送信についてご質問があります。

Posted: 2011年6月04日(土) 00:04
by taketoshi
TCPでエコーバックサーバー的なプログラムを構築しています。
同じイベントハンドラで同一のソケットへ連続で送信すると、二回目のsend関数がサーバーに届いてないようです。
回避方法はありますでしょうか、たとえば以下のようなコードです

コード:

			//Winsock接続完了通知
			case FD_CONNECT:
				bRet = ws.Connect(lParam);
				if(bRet == true){
					//サーバーからデータの引き出し
					ws.SetRequest(1,NULL);
					ws.SendData();
					//サーバへユーザー名の登録
					ws.SetRequest(2,NULL);
					ws.SendData();
				}
				break;

このコードではユーザー名の登録がスルーされてしまいます。
ご指導お願いいたします。

Re: ソケットへの連続送信についてご質問があります。

Posted: 2011年6月04日(土) 12:05
by softya(ソフト屋)
wireSharkなどでパケットは確認されましたか?

Re: ソケットへの連続送信についてご質問があります。

Posted: 2011年6月04日(土) 15:27
by taketoshi
wireSharkをダウンロードして確認してみました。
ちょっと操作が難しくてドコをみていいのかわからなかったです。

メッセージボックス関数でサーバー側の受信文字列を都度出力していたのですが、挙動が少し変でした。
連続でソケットにデータを送信した場合、サーバー側はデータをどのように読み出していくのでしょうか。

Re: ソケットへの連続送信についてご質問があります。

Posted: 2011年6月04日(土) 16:10
by taketoshi
デバッグかけて色々追っかけたところ、自己解決しました。

サーバー側の受信部分にバグがあり、前回の受信が終わらないプログラムになっていました。
softyaさんありがとうございました。

Re: ソケットへの連続送信についてご質問があります。

Posted: 2011年6月04日(土) 16:12
by softya(ソフト屋)
解決したみたいですが、使い方はこちらを。
「Wiresharkでネットワーク・プロトコルを解析する(基本操作編) - @IT」
http://www.atmarkit.co.jp/fwin2k/win2kt ... shark.html

wiresharkは便利ですのでぜひ活用してください。