通过socket发送结构体

本文详细介绍了如何在C++中利用socket通过直接将结构体转化为内存中的方式来发送数据。包括结构体的定义、实例化、内存复制以及接收方的接收过程。解释了这种发送方式的原理及其实现细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


c/c++通过socket发送结构可以直接先将结构转化到内存中,再通过send直接发送。 

首先,我们建立一个结构体。 

struct UsrData{ 

char usr_id[16]; 

char usr_pwd[16]; 

char usr_nickname[16]; 

}; 



当然,这个结构体在发送方与接收方都必须声明。 

接下来创建对象并初始化,然后发送。 

UsrData sendUser; 

memcpy( sendUser.usr_id, “100001”, sizeof(“100001”) ); 

memcpy( sendUser.usr_pwd, “123456”, sizeof(“123456”) ); 

memcpy( sendUser.usr_nickname, “Rock”, sizeof(“Rock”) ); 

send( m_socket, (char *)&sendUser, sizeof(UsrData), 0 ); 



这样发送方就已经将这个mUser对象以字符串的形式发送出去了。 

最后在接收方做接收。 

char buffer[1024]; 

UsrData recvUser; 

recv( m_socket, buffer, sizeof(buffer), 0 ); 

memcpy( &recvUser, buffer, sizeof(buffer) ); 



这样得到的recvUser对象里的数据与sendUser相同了。具体原因其实很简单,就是因为结构体对象的内存区域连续,同时每个成员的区块大小都分配好了,当接收完自己的区块,其实自己的数据已经接收完成。挺简单的,但还是挺有用的。  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值