linux - linux : send() 套接字编程

标签 linux network-programming

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

代码是:

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/

相关文章:

linux - Qt Creator 无法在 Ubuntu 10.04 上运行 gdb

c - 什么是最好的,单线程或多线程服务器?

java - 为什么在不尝试 I/O 的情况下不可能检测到 TCP 套接字已被对等方正常关闭?

java - 帮助通过 nat 与套接字通信

javascript - 使用 D3 库进行动态过滤

database - Linux 中的开源集群 SQL 数据库

linux - Ghostscript 输出空白 pdf

linux - 由于单模块依赖性,XSP 配置失败

linux - 汇编和字符串中的段错误

c++ - 6 字节 MACID 的表示