typedef struct _head
{
char type
unsigned short len;
}hdr, *phdr; //数据包中的数据结构
typedef struct _data
{
char buf[MAX_NUM_BUF];//数据
}DATABUF, *pDataBuf; DATABUF m_data;void CClient::HandleData(const char* pExpr) { memset(m_data.buf, 0, MAX_NUM_BUF);//清空m_data //如果是“byebye”或者“Byebye” if (BYEBYE == ((phdr)pExpr)->type) { EnterCriticalSection(&m_cs); phdr pHeaderSend = (phdr)m_data.buf; //发送的数据 pHeaderSend->type = BYEBYE; //单词类型 pHeaderSend->len = HEADERLEN + strlen("OK"); //数据包长度 memcpy(m_data.buf + HEADERLEN, "OK", strlen("OK")); //复制数据到m_data" 红色标记的代码如何理解,这里不是把m_data.buf已经转化成 phdr类型了,已经知道了数据类型和数据包的长度,为什么这里还要加上HEADERLEN呢?希望哪位大侠能详细介绍一下红色标记代码,在这里如何来理解,非常感谢。
{
char type
unsigned short len;
}hdr, *phdr; //数据包中的数据结构
typedef struct _data
{
char buf[MAX_NUM_BUF];//数据
}DATABUF, *pDataBuf; DATABUF m_data;void CClient::HandleData(const char* pExpr) { memset(m_data.buf, 0, MAX_NUM_BUF);//清空m_data //如果是“byebye”或者“Byebye” if (BYEBYE == ((phdr)pExpr)->type) { EnterCriticalSection(&m_cs); phdr pHeaderSend = (phdr)m_data.buf; //发送的数据 pHeaderSend->type = BYEBYE; //单词类型 pHeaderSend->len = HEADERLEN + strlen("OK"); //数据包长度 memcpy(m_data.buf + HEADERLEN, "OK", strlen("OK")); //复制数据到m_data" 红色标记的代码如何理解,这里不是把m_data.buf已经转化成 phdr类型了,已经知道了数据类型和数据包的长度,为什么这里还要加上HEADERLEN呢?希望哪位大侠能详细介绍一下红色标记代码,在这里如何来理解,非常感谢。
解决方案 »
- 有没有什么函数设置EDIT每行最大显示字符数呢
- 使用DLL里面的类,退出时有错误响声
- 已经创建好的单行CEdit编辑框是否无法通过SetWindowLong来将其变更为多行属性?
- vc下用什么函数将 一个0~15的数字 转化为16进制 字符?像vb中的 HEX一样
- 大家帮忙处理一下这个string。
- 一个对话框上的按钮问题?(不解)
- 如何不用CDC,而直接调用WINDOWS API的画图函数在窗体上画图?
- 使用socket,在bind后如何得到由系统分配的端口
- 关于窗口显示位置的问题.知道的请举手*^_^*
- 谁有这样的程序!
- VC TAB标签在鼠标移动过时改变颜色 如何实现
- 关于unicode和多字节
这转完是什么样?哎,好久没好好看C++了
不知道是否正确,也不知道是否有给unsigned short len值
指向包体的指针位置=指向包头指针+包头长度。