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);
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);
相关文章推荐
- treap 1286郁闷的出纳员.cpp
- C++引用
- 关于C++中用两个迭代器方式初始化string的知识
- C++调用java的过程
- C/C++动态分配与释放内存的区别详细解析
- Google C++ 编程规范 笔记
- 【C语言】有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
- 并查集_POJ 1182_食物链
- c/c++宏定义的基本用法
- 讲解C++编程中Address-of运算符&的作用及用法
- c语言实现动态指针数组Dynamic arrays
- C语言练习代码
- C语言技巧
- C语言 随机数
- 详解C++编程中的sizeof运算符与typeid运算符
- C语言system命令
- C语言模拟C++类
- C++中关于[]静态数组和new分配的动态数组的区别分析
- C++ using namespace std 用法深入解析
- 详解C++中二进制求补运算符与下标运算符的用法