소켓 프로그램을 수행하고 있고 서버가 장치에 연결된 후 해당 프로그램에 메시지를 보내려고합니다. 하지만 send() 함수는 배열에 저장된 바이트 수보다 큰 바이트 수를 반환합니다. 그리고 메시지는 전송되지 않습니다. 여기 send() 함수가 필요한 바이트를 더 반환합니다. C++
내 코드입니다 :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 !!");
}
}
사람이 왜 이런 일이 알고?
CHAR 유형이'char'입니까? 그것은 가능합니까 wchar입니까? 보십시오 cout << sizeof (CHAR). –