我有以下代码用于发送响应,但是只有前4个字节作为响应发送。为什么这样的行为?

int sendRaw(struct soap *soap, const char *respMsg)
{
        if (soap_response(&objSoap, SOAP_FILE)) /* OK HTTP response header */
        {
                soap_end_send(&objSoap);
                return soap->error;
        }
        for(int i = 0; i < sizeof(respMsg); i++)
        {
                if(soap_send_raw(&objSoap,&respMsg[i],1))
                {
                        return soap_end_send(&objSoap);
                }
        }
        soap_end_send(&objSoap);
        return SOAP_OK;
}

我的电话就是这样
  const char  msg = "this is a rest response";
  return sendRaw(&objSoap,msg);

最佳答案

由于respMsgchar *,因此它的大小等于系统中任何其他指针的大小,给定您的问题描述似乎是4个字节(32位):

    for(int i = 0; i < sizeof(respMsg); i++)

如果respMsg是字符串,则使用strlen(respMsg) [在您的小示例中就是这种情况],如果它是某种二进制数据,则需要传递实际大小。

10-08 14:40