TCP 服务器端接收 16进制有关问题
TCP 服务器端接收 16进制问题。
客户端发送16进制 一串数据到服务器端,服务器端接接收到后。总是只能接收一个字符。
是什么原因。接收端如下代码
//TCP连接 用收到的客户端连接socket 接收数据
SOCKET sockConn = accept(sockServer, (SOCKADDR*)&addrClient, &len);
char recvBuf[100];
int num=recv(sockConn, recvBuf, 100, 0);
recvBuf[num]='\0';
用TCP调试助手 以 16进制形式发送 99 01 02 03 04 05到服务器端接收
//将收到的字符打印出来
for(int i=0;i<num;i++)
printf("%02X ",recvBuf[i]);
printf("\n");
则如下效果
FFFFFF99 01 02 03 04 05
是什么问题?如果用一下形式打印整个字符串 则只能打印出问号(16进制 99的 ASCII)是什么原因?
printf("receive data is: %s\n", recvBuf);
------解决思路----------------------
int num=recv(sockConn, recvBuf, 100, 0);
返回的num是收到数据的长度,你看看这个是多少,recv默认是以byte方式传送数据,就一个字节一个字节的传送,如果发送端用的是十六进制,应该是把这个数据分面两个字节传送了,你可以把recvBuf[0]和recvBuf[1]转换成一个两字节的数据类型,看看是不是和你发送的数据一样。
------解决思路----------------------
发工程给我,我也试试。
------解决思路----------------------
char -> BYTE
客户端发送16进制 一串数据到服务器端,服务器端接接收到后。总是只能接收一个字符。
是什么原因。接收端如下代码
//TCP连接 用收到的客户端连接socket 接收数据
SOCKET sockConn = accept(sockServer, (SOCKADDR*)&addrClient, &len);
char recvBuf[100];
int num=recv(sockConn, recvBuf, 100, 0);
recvBuf[num]='\0';
用TCP调试助手 以 16进制形式发送 99 01 02 03 04 05到服务器端接收
//将收到的字符打印出来
for(int i=0;i<num;i++)
printf("%02X ",recvBuf[i]);
printf("\n");
则如下效果
FFFFFF99 01 02 03 04 05
是什么问题?如果用一下形式打印整个字符串 则只能打印出问号(16进制 99的 ASCII)是什么原因?
printf("receive data is: %s\n", recvBuf);
------解决思路----------------------
int num=recv(sockConn, recvBuf, 100, 0);
返回的num是收到数据的长度,你看看这个是多少,recv默认是以byte方式传送数据,就一个字节一个字节的传送,如果发送端用的是十六进制,应该是把这个数据分面两个字节传送了,你可以把recvBuf[0]和recvBuf[1]转换成一个两字节的数据类型,看看是不是和你发送的数据一样。
------解决思路----------------------
发工程给我,我也试试。
------解决思路----------------------
char -> BYTE