gpt4 book ai didi

c++ - send() 函数返回所需的更多字节 C++

转载 作者:太空宇宙 更新时间:2023-11-04 15:43:53 26 4
gpt4 key购买 nike

我正在做一个套接字程序,在我的服务器与设备连接后,我试图向他发送消息。但是 send() 函数返回的字节数大于存储在我的数组中的字节数。并且没有发送消息。

这是我的代码:

StartSendingMessages()
{
int retorno;
CString TextRetorno;

HEX_bufferMessage = new CHAR[7]; // there are seven bytes

// specifies the state
HEX_bufferMessage[0] = 0xF0;
HEX_bufferMessage[1] = 0x15;
HEX_bufferMessage[2] = 0x31;
HEX_bufferMessage[3] = 0x04;
HEX_bufferMessage[4] = 0x02; // green
HEX_bufferMessage[5] = 0x0E; // C1
HEX_bufferMessage[6] = 0xF7;

retorno = send(sckSloMo, HEX_bufferMessage, sizeof(HEX_bufferMessage), 0);

TextRetorno.Format("%d", retorno); // retorno = 8
AfxMessageBox("Bytes enviados: " + TextRetorno);

if (retorno == SOCKET_ERROR)
{
AfxMessageBox("Error Send!!");
return;
}
else if(retorno != 0)
{
AfxMessageBox("Send() OK !!");
}
}

谁知道为什么会这样?

最佳答案

你的意思不是sizeof(HEX_bufferMessage)HEX_bufferMessage 的类型 [大概] char*,并且 char* 的大小在您的 [64 位] 系统上是 8 个字节.

改为传递数字 7,最好使用常量,如果值 7 确实是固定的,则摆脱动态分配。

const int BUF_SIZE = 7;
char HEX_bufferMessage[BUF_SIZE];

// ...

retorno = send(sckSloMo, &HEX_bufferMessage[0], BUF_SIZE, 0);

关于c++ - send() 函数返回所需的更多字节 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19769836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com