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相同了。具体原因其实很简单,就是因为结构体对象的内存区域连续,同时每个成员的区块大小都分配好了,当接收完自己的区块,其实自己的数据已经接收完成。挺简单的,但还是挺有用的。
本文详细介绍了如何在C++中利用socket通过直接将结构体转化为内存中的方式来发送数据。包括结构体的定义、实例化、内存复制以及接收方的接收过程。解释了这种发送方式的原理及其实现细节。
227

被折叠的 条评论
为什么被折叠?



