c++ - 套接字缓冲区到字符串

标签 c++ c sockets

我在将 BUFFER 转换为字符串时遇到问题,我想知道如何转换 BUFFER,从套接字接收。

我想要像我的db[0] = buffer,它的缓冲区包含一个像“helloworld”这样的字符串,所以如果我想打印db[0] ,我会得到“helloworld”。

while(1){
    recv(newSocket, buffer, BUFFER_SIZE, 0);
    if(strcmp(buffer, "q") == 0){
        printf("Deconnexion de %s:%d\n", inet_ntoa(newAddr.sin_addr), ntohs(newAddr.sin_port));
        break;
    }else{
        printf("%s\n",buffer);//Client recu: 
        send(newSocket, buffer, strlen(buffer), 0);
        bzero(buffer, sizeof(buffer));

        db[i]=buffer;

        printf("%c",db[i]);

        //mysql_q(db[i]);// query function

        i++;
    }               
}

db 类型是一个 char 数组,但是当我编译它时它给我这个错误:

server.cpp:81:12: error: invalid conversion from ‘char*’ to ‘char’ [-fpermissive]
  db[i]=buffer;

最佳答案

您需要处理 recvsend 的返回值,因为它们执行必须处理的不完整读取和写入。

此外,recv 不会零终止接收到的数据,您需要自己再次执行此操作才能调用 strcmp

最重要的是,您需要 a way to delimit complete messages .

换句话说,您需要通过消息提取、部分读/写和错误处理来重写整个部分才能使其正常工作。

关于c++ - 套接字缓冲区到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697643/

相关文章:

c - 从字符串中打印一个单词

c - C 中的字符串解析 - 带格式说明符的字符串

java - 如何使用 spring-integration 创建异步单例套接字服务器?

c++ boost asio超时以阻止连接

c++ - openGl 对象在某些 zCoord 处消失

c++ - 我的 C++ 程序仅在 Xcode 中返回 EXC_BAD_ACCESS

c++ - 错误 : aggregate ‘food_type a’ has incomplete type and cannot be defined

c - 为什么静态变量不允许loop()运行?

java - 如何将用户名包含在消息中,然后从那里获取它?

c++ - Visual Studio 静态库编译器硬编码相对路径