码迷,mamicode.com
首页 > 编程语言 > 详细

C++ socket编程——3种方法发送不同类型的数据

时间:2014-08-14 14:09:28      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:c++   socket   内存   json   编程   

socket传送数据,一般来讲是char型的,如何传送我们需要的数据类型勒?

1.结构体;2, Json序列化,3. 定义一个class

1.结构体

相对来说简单点,看看网上的一个例子:

假设需要传送的结构体如下:

struct person{

char name[20];

int age;

float high;

};

可在发送数据的地方对数据进行处理,将其转换成一个字符串进行传送,而在接受方定义相同的结构体对这个字符串进行解析即可。

发送方代码如下:

char temp[100];    //传送的字符串

struct person p1; //声明一个需要传送的结构体

//以下是结构体的初始化信息

p1.age = 10;

p1.high = 1.80f;

strcpy(p1.name,"zhangsan",sizeof(p1.name));

memset(temp,0,sizeof(temp));  //对该内存段进行清 

memcpy(temp,&p1,sizeof(person));  //把这个结构体中的信息从内存中读入到字符串temp中

//接下来传送temp这个字符串就可以了

sendto(sock,temp,sizeof(person),0,(SOCKADDR*)&addSer,sizeof(SOCKADDR));
 //这样这个结构体的信息就发送到addSer相应的套接字了

 

接收方代码如下:

同样需要定义字符串和相同的结构体对象

char temp[100];    //传送的字符串

struct person p2; //声明一个存放接收信息的结构体

memset(temp,0,sizeof(temp)); //清内存

//下面是接收字符串的代码

 recv(clientSocket,temp,101,0);

//下面对字符串信息进行还原,将其变成我们的结构体数据

memcpy(&p2,temp,sizeof(person));  //解析过程,将字符串的内容写入到p2所在内存完成解析

下面就可以对p2中的数据进行各种操作了,也完成了结构体数据的传送。

2. Json序列化

很显然上面若是很复杂,结构体是不能够搞定的!Json序列化是一个好的东西。

从原理上来讲就是你在传递你的数据的时候。按照Json数据的key告诉他数据的类型,按照Json的value告诉数据的值。就这样,于是乎就可以传过去了。

C++需要一个jsoncpp的文件。具体的操作Google吧!

3.定义一个class

这是我今天上午发现的,原来定义一个类,再将它指针操作就可以发过去了。这种方法真是太帅了!

让我也想到,第一种方法也可以取地址发过去吧!!!


C++ socket编程——3种方法发送不同类型的数据,布布扣,bubuko.com

C++ socket编程——3种方法发送不同类型的数据

标签:c++   socket   内存   json   编程   

原文地址:http://blog.csdn.net/ikerpeng/article/details/38387171

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!