c++ socket 数据传输总结

总结:不同数据的socket 传输和接收说明

1 最普通类型: char型

socket传送数据,一般来讲是char型的。
现在是一个客户端和服务端的例子
C++
发送端:
char input_msg [buffsize];
bzero(input_msg, buffersize);
send (serverfd, input_msg,sizeof(input_msg)) ;
接收端:
char recv_msg[buffsize];
c
byte_num = recv(client_fds, recv_msg,buffsize, 0); //返回收到的数据量
if (byte_num > 0)
{
if(byte_num > buffsize)
{
byte_num = buffsize;
}
recv_msg[byte_num] = ‘\0’;
printf(“客户端(%d):%s\n”, i, recv_msg);
}
else if(byte_num < 0)
{
printf(“从客户端(%d)接受消息出错.\n”, i);
}
else
{
FD_CLR(client_fds[i], &server_fd_set);
client_fds[i] = 0;
printf(“客户端(%d)退出了\n”, i);

结构体类型 :struct

假设需要传送的结构体如下:
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这个字符串就可以了
send(sock,temp,sizeof(person),0)
//这样这个结构体的信息就发送到addSer相应的套接字了
接收方代码如下:
同样需要定义字符串和相同的结构体对象
char temp[100]; //传送的字符串
struct person p1; //声明一个存放接收信息的结构体
memset(temp,0,sizeof(temp)); //清内存em
memset(&p1,0,sizeof(p1);
//下面是接收字符串的代码
recv(clientSocket,temp,sizeof(temp));
//下面对字符串信息进行还原,将其变成我们的结构体数据
memcpy(&p1,temp,sizeof(p1)); //p1发送到了这边的p1
p1.age //等等一系列操作。

3.类的类型:class

这是我今天上午发现的,原来定义一个类,再将它指针操作就可以发过去了。结构体估计也可以行得通。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值