我的服务器recv()来自客户端的数据包并且必须显示它 问题是它没有显示正确的数据
以下是代码:
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult > 0) {
for ( int i = 0; i < iResult; i++ ) {
printf( "%02x ", buf[i] );
}
printf( "\n" );
// return "cc cc cc cc cc cc cc cc cc cc"
// correct return "0A 00 2C 01 29 00 0D 00 B4 01"
当客户端连接服务器时显示cc cc cc cc cc cc cc cc cc cc
,但这不是正确的
它应该是0A 00 2C 01 29 00 0D 00 B4 01
更新
#define DEFAULT_BUFLEN 512
char recvbuf[DEFAULT_BUFLEN];
int recvbuflen = DEFAULT_BUFLEN;
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult > 0) {
for ( int i = 0; i < iResult; i++ ) {
printf( "%02x ", recvbuf[i] );
}
printf( "\n" );
// return "0A 00 2C 01 23 00 0c 00 ffffffB3 01"
// correct return "0A 00 2C 01 23 00 0c 00 B3 01"
现在数据包上有额外的ffffff,即使我只收集了10个字节。
答案 0 :(得分:1)
现在数据正确。当您传递给char
的{{1}}值提升为printf
时,您看到的是签名延期。您可以将int
转换为char
,它应该正常显示。
unsigned char