套接字缓冲区到字符串



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

我想拥有我的db[0] = buffer,其中缓冲区包含像"helloworld"这样的字符串,所以如果我想打印db[0],我会得到"helloworld"。

while(1){
recv(newSocket, buffer, BUFFER_SIZE, 0);
if(strcmp(buffer, "q") == 0){
printf("Deconnexion de %s:%dn", inet_ntoa(newAddr.sin_addr), ntohs(newAddr.sin_port));
break;
}else{
printf("%sn",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

最重要的是,您需要一种方法来分隔完整的消息。

换句话说,您需要使用消息提取,部分读/写和错误处理来重写整个部分以使其工作。

如果db[i]是一个字符数组,其中db应该是双维数组,你需要做一个memcpy或strcpy(如果你确定缓冲区将有以null结尾的字符串(来获取缓冲区的内容到db[i]。

db[i] = buffer

是错误的,这就是编译错误的原因。

最新更新