0

サーバーから次のデータを送信しています。

31 37 38 33 00 00 00 00 00 00 00 33 34 37 78 35
74 32 71 39 37 34 79 35 74 76 38 35 67 6e 32 6d

winsock2.hを使用したクライアント側:

...
int recvbuflen = 32;
char *tmpBuff = new char[recvbuflen];

int bytesRcvd = recv(conn_socket, tmpBuff, recvbuflen, 0);
...

だから今:

bytesRcvd = 32;
tmpBuff = {31 37 38 33 33 34 37 78 35 74 32 71 39 37 34 79 35 74 76 38 35 67 6e 32 6d} in hex

基本的にrecv()は、受信バッファの書き込み中に '\0' シンボルをスキップします

すべての '\0' 記号を含むすべてのデータを受け取る方法は?

4

1 に答える 1

3

recv() バイトはもちろん、バイトを無視しません'\0'。これは、 が 32 に設定されているという事実によって特に明らかです。これはbytesRcvd、送信されたすべてのバイトがバッファに正しく受信されていることを意味します。そのため、別のことが起こっています。ほとんどの場合、バッファーの内容に対するデバッガーの検査ウィンドウは、実際に'\0'バイトを無視するものです。

于 2013-04-03T19:13:29.420 に答える