0
这是我的代码..结果不同;的recv(袜子,BUF,的sizeof(BUF),0)和strlen的(BUF)中的C++
char buf[5000];
bool isHandshaking = false;
bool isSingaling = false;
while(1)
{
//-----------클라이언트로부터 수신------------
int recvsize = recv(sock,buf,sizeof(buf),0);
printf("recvsize = %d\n",recvsize);
buf[recvsize] = '\0';
printf("buf_len = %d\n",strlen(buf));
.
.
.
}
上述结果...的
recvsize = 2525
buf_len = 126 /*(or different value, sometimes 2525)*/
值recvsize is alaways 2525 而且我预计buf的strlen值当然会等于recvsize。但是,bufsize有时候等于2525,但有时它不一样。 我错过了什么?
你知道[std :: strlen](http://en.cppreference.com/w/cpp/string/byte/strlen)是否计数到它找到的第一个''\ 0'? – Galik
@Galik说的是'recvsize'是套接字上接收到的字节数。然而,一个字符串是一个字符数组,而当传递给'strlen()'时,字节数组现在假设字符串语义而不是字节数组语义。因此,'strlen()'返回从起始点到找到字符串结尾或零值时发现的字符数。要确定这是否确实发生了什么,可以检查'strlen()'返回的长度之后的字符是否为零。 –