GSOAP不会发送超过4个字节的响应
gSoap not sending more than 4 bytes of response
i有以下代码发送响应,但是仅发送前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)
[在您的小示例中是这种情况],如果是某种二进制数据,则需要沿实际尺寸传递。
sizeof(respMsg)
这是4,因为您的指针为32位,为4个字节。
你想要
strlen(respMsg)
相关文章:
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 为什么 bool 和 _Bool 如果它们在内存中占用 1 个字节,它们只能存储 0 或 1
- 在 Linux 中,uint32_t从 4 个字节更改为 6 个字节
- 运行时错误:引用绑定到类型"int"的未对齐地址0xbebebebebebebec6,这需要 4 个字节对齐 (stl_vector.h)
- 向指针地址添加 20 个字节偏移量
- 将(N 个字节)无符号字符指针转换为浮点数和双 C++
- C++/地址空间:每个地址 2 个字节?
- 为什么这个结构需要 24 个字节
- 为什么带有 vptr 的对象长 12 个字节?
- 使用 valgrind 检查我的链表暗示中的内存泄漏,让我"肯定丢失:1 个块中有 40 个字节"
- 复制后删除原始数组指针将前 3 个字节设置为 0
- 在编译时而不是运行时创建一个由两个字节组成的值
- 为什么在我的实现中,所有数组都对齐到 16 个字节?
- 使用 Python 导出 4 个字节浮点数
- C++向指针地址添加 4 个字节
- 是否强制转换void**并将第一个字节设置为nullptr
- AES-128 CFB-8解密的前16个字节已损坏
- Qt TCP 套接字 - 写入超过 15 个字节
- 在"C++代码"部分中,可能会写入两个字节
- 视觉C++转换和写入值为 10 的无符号 int 给出 5 个字节