我是linux env中套接字编程的初学者。

代码是:

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中的send()参数会在(strlen(buffer)+1)中添加另一个字节send(s,buffer,strlen(buffer)+1,0);
请帮我 !

最佳答案

在C语言中,编译器在每个字符串的末尾放置一个\0(NULL)字符。因此,当您使用字符串时,计算机可以了解该字符串的结尾。在Pascal语言示例中,编译器将字符串的字节放在字节的前面,以存储字符串的长度。

这一定是那里+1的原因。

关于linux - Linux套接字编程: send(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8692463/

10-11 22:05
查看更多