我有以下代码用于发送响应,但是只有前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);
最佳答案
由于respMsg
是char *
,因此它的大小等于系统中任何其他指针的大小,给定您的问题描述似乎是4个字节(32位):
for(int i = 0; i < sizeof(respMsg); i++)
如果
respMsg
是字符串,则使用strlen(respMsg)
[在您的小示例中就是这种情况],如果它是某种二进制数据,则需要传递实际大小。