socket 怎么发送一个变量值

来源:百度知道 编辑:UC知道 时间:2024/06/07 19:42:43
现在在服务端有socket的一个send函数,是这样的send(new_fd,&voltage,8,0);这个函数不用说明应该知道什么意思吧,我现在是要发送一个变量voltage的值,但是这个变量是floate型的,我已经把它转化为char型的还是不对,结果还是不对。请问下怎么才能把voltage发送到客户端?
现在还有个新问题,我的server是在linux下的,而client在windows下c++编的,send出来的数据在windows下显示一团乱码,我不知道发送的数据是不是正确的,大侠,求助!

可以定义一个结构体变量,结构体里面有float、double类型的数据,然后发送;
参考如下:
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)); //对该内存段进行清 0

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)); //清内存

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

recvfrom(sock_listen,temp,sizeof(temp),0,(sockaddr*)&addCli,&len