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