说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请高手指教如何在WinSocket.SendData中发送自定义的结构体数据???!!!

编辑:说三道四文库 发布时间:2018-06-22 03:48
HTML文档下载 WORD文档下载 PDF文档下载
如:typedef struct _man
{
char Sex[2];
int age;
}man;
怎样才能用WinSock控件将该结构体数据发送出去,客户端又如何能成功接收和解析呢?
必须假设客户端知道您发送的是
man而不是其他数据。
to  iicup;
客户端当然知道要接收的数据类型。
就按一般数据发送就可以

大致如下:

// 发送
man M;
M.Sex[0] = 'M';
M.Sex[1] = '\0';
M.age = 18;

send(&M,sizeof(M));

// 接收
man M;
recv(&M,sizeof(M));
和楼上一样。直接就可以发。接受的时候也要用相同格式接受,就可以直接得到结构体中相应位置的数据。
在客户和服务两端定义相同的数据结构,然后就可以直接发送和相应的接收了
可以把struct转换为char*,然后发送,接收后,相应的提取对应的数据
楼上的思路可行。
本来有代码来着 现在没了。
to: iicup(双杯献酒) 
各位:WinSock控件的发送函数可是SendData啊。函数定义如下:
void CMSWinsockControl::SendData(const VARIANT& data)
不知道如何用该函数传送和接收自定义的结构体数据?
混分
SendData((PBYTE)&st,sizeof(st));
const VARIANT& data?
data.vt=VT_UI1|VT_BYREF;
data.byref=PBYTE(&st);
typedef struct _PACKET
{
int          nCode;
char         *pszName;
char         age[10];
}PACKET , *LPPACKET;



PACKET p;
p.nCode = 5;
strcpy(p.age, "test");
p.pszName = "gdy119";


send(s, (char*)&p, sizeof(p), 0);


-------------------------------------

PACKET p;
ZeroMemory(&p, sizeof(p));
recv(ss, (char*)&p, sizeof(p), 0);
AfxMessageBox(p.age);
AfxMessageBox(p.pszName);


一切正常
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘