程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了为什么在套接字中发送函数返回 0,但客户端确实收到了消息?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决为什么在套接字中发送函数返回 0,但客户端确实收到了消息??

开发过程中遇到为什么在套接字中发送函数返回 0,但客户端确实收到了消息?的问题如何解决?下面主要结合日常开发的经验,给出你关于为什么在套接字中发送函数返回 0,但客户端确实收到了消息?的解决方法建议,希望对你解决为什么在套接字中发送函数返回 0,但客户端确实收到了消息?有所启发或帮助;
voID SendStr(int connfd,std::string str)
{
    uint16_t *len = new uint16_t(str.size());
    const char * lenByte = (char *)len;
    char *sendByte = new char[*len + 2]{0};
    memcpy(sendByte,lenByte,sizeof(*len));
    memcpy(sendByte + 2,str.c_str(),*len);
    std::cout << "str size " << *len << std::endl;
    //std::cout << "len size " << sizeof(len) << std::endl;

    size_t nleft = *len + 2;
    std::cout << "need to send " << nleft << std::endl;
    int nsend = 0;
    while (nleft > 0)
    {
        //std::cout << "sending " << nleft << "bytes" << std::endl;
        if (nsend = (write(connfd,sendByte + nsend,nleft)) < 0)
        {
            if (errno == EINTR)
                conTinue;
            ERROR_EXIT("send");
        }
        else if (nsend == 0)
            //conTinue;
            break;
        nleft -= nsend;
        std::cout << "sended " << nsend << " left " << nleft << std::endl;
    }
    std::cout << "send complete" << std::endl;
    delete[] sendByte;
    delete len;
}

完整代码为here
看到write和send函数返回字节的总和,而这里返回0,客户端好像运行正常,搞糊涂了。

解决方法

你看到的是错误的。

在本声明中

  geTinformation(Name) {
    var data = {
      sName: name
    };
    
    return instance
      .get('/getSeason/',data)
      .then((res) => {
        console.log(res);
      });
  }

'Content-Type': 'application/json', 的比较结果被赋值给 updatE table_a ta SET missing = true WHERE NOT EXISTS ( SELECT 1 from table_b tb WHERE ta.guid = tb.guid ); 。如果条件为真,这将变为 if (nsend = (write(connfd,sendByte + nsend,nleft)) < 0) ,如果条件为假,则变为 (write(connfd,nleft)) < 0。看来你把这个比较结果误解为字节的总和了。

如果要将nsend返回的内容赋值给1然后比较,应该是这样的

0

附录:write 在套接字上返回 0 的唯一方法是 nsend 为 0。

大佬总结

以上是大佬教程为你收集整理的为什么在套接字中发送函数返回 0,但客户端确实收到了消息?全部内容,希望文章能够帮你解决为什么在套接字中发送函数返回 0,但客户端确实收到了消息?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:0