开始c++ 创建socket编程时候,总是定一个足够大的数组来接收数据,从效率上讲是不科学的,如果能控制发多少接收多少是理想状态,下面例子说明:
bool CMySocket::Send(const char *pSMsg, int len)
{
char* sendBuff = new char[len + 4];//申请发送数组,+4是要发送长度所占的字节数
byte lenBuff[4] = { 0 };//长度数组并初始化
int2bytes(len, lenBuff, 4);
memcpy(sendBuff, lenBuff, 4);
memcpy(sendBuff + 4, pSMsg, len);
int nRel = send(m_Socket, sendBuff, len + 4, 0);
delete[]sendBuff;
sendBuff = NULL;
if (nRel == SOCKET_ERROR)
{
return false;
}
return true;
}
//下面是接收代码
byte headBuf[4];//定义字节数组,读取发送过来的总长度
nRel = recv(pSocket->m_Socket, (char*)headBuf, 4, 0); //获取总长度
if (nRel > 0)
{
int nLen = bytes2int(headBuf, 4);
char* msgBuf = new char[nLen];
nRel = recv(pSocket->m_Socket, msgBuf, nLen, 0);//获取实际数据
if (nRel > 0)
{
CDataCenter::ToDataCenter(pSocket, msgBuf); //处理数据
}
}
希望以上代码对大家有帮助,尤其是新手,可以参考。不懂的欢迎联系。