我正在做一个套接字程序,在我的服务器与设备连接后,我试图向他发送一条消息。但 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*
,以及a的大小char*
在您的 [64 位] 系统上是 8 个字节。
传号码7
相反,最好使用常量,并且如果值7
确实是固定的。
const int BUF_SIZE = 7;
char HEX_bufferMessage[BUF_SIZE];
// ...
retorno = send(sckSloMo, &HEX_bufferMessage[0], BUF_SIZE, 0);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)