各位高手:
小弟最近要开发个socket程序,传递的数据包格式定义如下如下:
头标记(4字节,数据类型:DWORD,固定值:0x0B1C0A1D) + 接口版本号(4字节,数据类型:DWORD,固定值:0x00000001) + 数据长度(4字节,数据类型:DWORD,“应用数据”的字节长度)+ 应用数据(数据类型:CString ,“是一个xml字符串”)请问我的数据包应该如何组成,在发送方应该如何打包发送,在接收方应该如何解包接收。小弟主要是对内存操作不是很熟悉,实在不明白如何将DWORD和CString组合在一起,请各位指教。
小弟最近要开发个socket程序,传递的数据包格式定义如下如下:
头标记(4字节,数据类型:DWORD,固定值:0x0B1C0A1D) + 接口版本号(4字节,数据类型:DWORD,固定值:0x00000001) + 数据长度(4字节,数据类型:DWORD,“应用数据”的字节长度)+ 应用数据(数据类型:CString ,“是一个xml字符串”)请问我的数据包应该如何组成,在发送方应该如何打包发送,在接收方应该如何解包接收。小弟主要是对内存操作不是很熟悉,实在不明白如何将DWORD和CString组合在一起,请各位指教。
解决方案 »
- SendMessage执行方式?
- 下面这该如何理解
- 急!在VC下可以改变控件的字体,为什么在EVC下不能改变?
- 各位大大进来看看 这是什么问题
- SDK方式如何实现文本选中加亮(不借助控件)?
- ADO中怎样执行SQL语句?
- 局域网上网如何自动检测代理服务器地址?
- 急!急! 怎样在父窗口中得到子窗口的客户区的大小?
- 如何在基于对话框的mfc程序中使用sdi中的“文件打开”呀??
- c:\program files (x86)\common files\system\ado\msado15.dll(1) : error C2018: unk
- 新建线程 定时发送消息
- 以前的程序中的一个窗口,现在想拿过来用,怎么搞啊?
typedef struct _packet
{
DWORD id;
DWORD ver;
DWORD lenght;
UCHAR data[1];
}packet,*ppacket;分配内存及发送
UCHAR *xmldata;//要发送的数据
DWORD datalen;//要发送的数据的长度
..........
ppacket packetData;
packetData=(ppacket)malloc(sizeof(packet)+datalen);
packetData->id=0x0B1C0A1D;
packetData->ver=0x01;
packetData->length=datalen;
memcpy(ppacketData->data,xmldata,datalen);
send(s,packetData,sizeof(packet)+datalen,0);
接收端的处理
UCHAR recvBuf[MAX_LEN];
ppacket tpd;recv(s,recvBuf,MAX_LEN,0);//注意这里不能保证一次就能接收你想要的数据;
tpd=(ppacket)recvBuf;
tpd->data;/////////处理你的数据