您的位置:首页 > 编程语言 > C语言/C++

C++ socket传输结构体

2016-01-14 17:27 393 查看
struct Test {
char ip[30];
char name[30];

};

发送双方都需定义好此结构体。

接收:

Test te;

char buff[1024];

//清空

memset(buff, 0, 1024);

memset(&te, 0x00, sizeof(Test));

//直接接收结构体,可行

recv(serConn, (char*)(&te), sizeof(Test), NULL);

//内存拷贝,程序崩溃。将字符串大小改成buff[100]后可行,查阅后,别人解释说是因为申请的栈过大

//还可通过配置属性->c/c++->代码生成->基本运行时检查 设置为默认值解决。

//memcpy(&te, buff, sizeof(buff));

//接收char*,然后转成结构体,可行

recv(serConn,buff, sizeof(buff), NULL);

te = *(Test*)buff;
printf("ip=%s,name=%s\n", te.ip,te.name);

发送:

Test cp;
memset(&cp, 0x00, sizeof(Test));
memcpy(cp.ip,"192.168.0.1",sizeof("192.168.0.1"));
memcpy(cp.name, "hello", sizeof("hello"));
send(sockClient, (char*)(&cp), sizeof(Test),NULL);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: