クライアントとサーバーの2つのプログラムがあります。クライアントは4バイトのASCIIコマンドを送信します
client command: BD?\r
server reads:
サーバーコード
while(1) {
int numbytes = 0;
printf("MAIN: waiting for commands\n");
memset(theRecvBuffer, '\0', THE_BUFFER_SIZE);
numbytes = recv(theCSock, theRecvBuffer, THE_BUFFER_SIZE, 0);
if(numbytes == 0) {
printf("client socket closed\n");
break;
}
if(numbytes == -1) {
printf("cmd loop received socket error: %s\n", strerror(errno));
break;
}
}
サーバーのrecv呼び出しは4バイトを返していますが、バッファーはNULLバイトで満たされています。recv呼び出しでバッファ情報が失われる原因となるものはありますか?とにかく、printステートメントを使用してrecv呼び出しで何が起こっているかをデバッグできますか?このプログラムは別のチップセットを搭載したデバイス上にあるため、デバッガーを使用できないため、制限があります。errnoは、4バイトを返すためエラーが発生しないため、役に立ちません。