我在将 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;
最佳答案
您需要处理 recv
和 send
的返回值,因为它们执行必须处理的不完整读取和写入。
此外,recv
不会零终止接收到的数据,您需要自己再次执行此操作才能调用 strcmp
。
最重要的是,您需要 a way to delimit complete messages .
换句话说,您需要通过消息提取、部分读/写和错误处理来重写整个部分才能使其正常工作。
关于c++ - 套接字缓冲区到字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50697643/