NetWorkRecv()で受信した文字列の末尾が"フフフフ"になる
Posted: 2010年6月04日(金) 12:09
いつもお世話になっております、山崎です。
今回は、NetWorkRecv()でバッファから取り出した文字列が
"フフフフフフフフ"
になってしまう件について伺いに参りました。
OSはXP、DXライブラリにVisualStudio2010を使っております。
ただ今通信部分を作っております。デバッグモードで作業しています。
通信のテストとして、接続相手に毎フレーム データを送信しあう、
というプログラムを作っています。
毎フレームでカウンタの値を+1し、その値を文字列として送信します。
しかしその受信したデータを表示すると、
受け取ったデータの先頭にはきちんと相手から送られたカウンタの値があるのですが、
それ以降が"フフフフフフ..."となってしまいます。
送信したデータは、"フフフフフフ..."となっていません。
以下が、そのデータの受信と送信を担う部分のコードです。
なお、接続する側もされる側も、以下のコードで動いております。
送信したときにはあったはずの終端文字が受信したデータには無くなっているようでした。
NetWorkRecv()で受信した文字列からは自動で終端文字が無くなる、という仕様ではないですよね…?
どのようにすれば
受信した文字列の末尾に"フフフフフフフ"がないデータを受け取れるのでしょうか。
今回は、NetWorkRecv()でバッファから取り出した文字列が
"フフフフフフフフ"
になってしまう件について伺いに参りました。
OSはXP、DXライブラリにVisualStudio2010を使っております。
ただ今通信部分を作っております。デバッグモードで作業しています。
通信のテストとして、接続相手に毎フレーム データを送信しあう、
というプログラムを作っています。
毎フレームでカウンタの値を+1し、その値を文字列として送信します。
しかしその受信したデータを表示すると、
受け取ったデータの先頭にはきちんと相手から送られたカウンタの値があるのですが、
それ以降が"フフフフフフ..."となってしまいます。
送信したデータは、"フフフフフフ..."となっていません。
以下が、そのデータの受信と送信を担う部分のコードです。
なお、接続する側もされる側も、以下のコードで動いております。
//データを受信して、その文字列の先頭を指すポインタを返す char* CommunicationManager::GetReceiveData(int HandleListIndex) { char Buffer[256]; int DataLength=GetNetWorkDataLength(NetHandleList[HandleListIndex]); NetWorkRecv(NetHandleList[HandleListIndex],Buffer,DataLength); printfDx("受信データ表示 ReceiveData= [%s]\n",Buffer); return Buffer; } //データを送信する void CommunicationManager::SendData(char* Data,int HandleListIndex) { NetWorkSend(NetHandleList[HandleListIndex],Data,strlen(Data)); printfDx("送信データ表示 Data= [%s]\n",Data); } //この関数を毎フレーム実行する void CommunicationManager::CommunicationManagerMain() { char SendDataTemp[256]; sprintf(SendDataTemp,"%d",ServerTime); SendData(SendDataTemp,0); char* ReceiveData=GetReceiveData(0); ServerTime++; if(SERVER_COUNT_MAX<=ServerTime) ServerTime=0; }ブレークポイントで処理を中断して、受信したデータを見てみると、
送信したときにはあったはずの終端文字が受信したデータには無くなっているようでした。
NetWorkRecv()で受信した文字列からは自動で終端文字が無くなる、という仕様ではないですよね…?
どのようにすれば
受信した文字列の末尾に"フフフフフフフ"がないデータを受け取れるのでしょうか。