socket::send简单的数据发送
int send(SOCKET s,const char *buff,int len,int flag);
发送的数据必须是 const char* 数据,在此,可以用两种方式进行消息发送(因为我就会两种...)
条件是:发送十六进制的字节数据
第一种方式:
使用 new的方式
前提需要知道发送的字节的大小,假设,我需要发送的字节大小是10
char * pBuffer = new char[10];
memset(pBuffer , 0 , 10);
pBuffer[0] = 0x03;
pBuffer[1] = 0x04;
pBuffer[2] = 0x04;
pBuffer[3] = 0x04;
pBuffer[4] = 0x04;
pBuffer[5] = 0x04;
pBuffer[6] = 0x04;
pBuffer[7] = 0x04;
pBuffer[8] = 0x04;
pBuffer[9] = 0x04;
m_socket.Send(pBuffer, 10, 0);
delete[] pBuffer;
pBuffer = NULL;
使用这种方式的弊端:当发送一段字符串时且字符串中有换行时需要注意了。而且拼接数据也是很麻烦的。
第二种方式
使用CByteArray的方式
使用这种方式,不需要提前知道发送的数据大小。
CByteArray dataArray;
dataArray.Add(0x02);
dataArray.Add(0x02);
dataArray.Add(0x02);
dataArray.Add(0x02);
dataArray.Add(0x02);
dataArray.Add(0x02);
dataArray.Add(0x02);
此时,用这种方式,需要对这些数据进行转换,因为send中只支持const char*的发送
需要 CByteArray 转成 char*
int nLen = dataArray.GetSize();
char* chBuffer = new char[nLen+1];
for (int i = 0 ; i < nLen ; i++)
{
chBuffer[i] = dataArray.GetAt(i);
}
chBuffer[nLen] = '\0';
当发送成功数据后,销毁该char*数据