我是linux env。
中socket编程的初学者代码是:
void proccess_server(int s)
{
ssize_t size =0 ;
char buffer[1024];
for(;;)
{
printf("proccess:%d proccessing socket :%d\n",getpid(),s);
size = recv(s,buffer,sizeof(buffer),0);
if(0 == size)
return ;
sprintf(buffer,"Response from server:%d,%d bytes altogether\n",getpid(),size);
send(s,buffer,strlen(buffer)+1,0);
}
}
我不明白为什么len
param在send()
中添加(strlen(buffer)+1)
中的另一个字节send(s,buffer,strlen(buffer)+1,0);
请帮助我!
答案 0 :(得分:2)
在C语言中,编译器在每个字符串的末尾放置一个\ 0(NULL)字符。因此,当您使用字符串时,计算机可以理解该字符串的结束位置。在Pascal语言示例中,编译器将字符串的字节前置放置为存储字符串的长度。
这必然是那里有+1的原因。