【发布时间】:2012-11-29 05:42:55
【问题描述】:
我的服务器 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 个字节。
【问题讨论】:
-
查看您在
recv调用中使用的变量与您在printf调用中使用的变量。 -
我更新了我的问题。谢谢你,非常愚蠢的错误。我没注意到。 :) 无论如何,现在它返回的数据比预期的要多。