首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >socket BUFFER TO STRING

socket BUFFER TO STRING
EN

Stack Overflow用户
提问于 2018-06-05 18:16:42
回答 2查看 425关注 0票数 1

我有一个问题来转换我的缓冲区到一个字符串,我想知道我如何转换我的缓冲区,recv从套接字。

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

代码语言:javascript
复制
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数组,但当我编译它时,会出现以下错误:

代码语言:javascript
复制
server.cpp:81:12: error: invalid conversion from ‘char*’ to ‘char’ [-fpermissive]
  db[i]=buffer;
EN

回答 2

Stack Overflow用户

发布于 2018-06-05 18:29:41

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

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

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

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

票数 3
EN

Stack Overflow用户

发布于 2018-06-05 18:34:28

如果dbi是char数组,db应该是双维数组,则需要执行memcpy或strcpy (如果您确定buffer将具有以null结尾的字符串),以将buffer的内容获取到dbi。

代码语言:javascript
复制
db[i] = buffer

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50697643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档