C++ 如何通过套接字发送对象?

标签 c++ sockets tcp send recv

我有一个问题要问你。

我有这门课:

`

#define DIMBLOCK 128
#ifndef _BLOCCO_
#define _BLOCCO_

class blocco
{
    public:
        int ID;
        char* data;


        blocco(int id);
};

#endif




blocco::blocco(int id)
{
    ID = id;
    data = new char[DIMBLOCK];
}

`

应用程序有一个客户端和一个服务器。 在我的服务器主体中,我以这种方式实例化此类的对象: 集团 a(1);

之后,我使用套接字打开客户端和服务器之间的连接。 问题是:如何将此对象从服务器发送到客户端或反之亦然? 你能帮帮我吗?

最佳答案

从字面上看,通过 TCP 连接发送对象是不可能的。套接字只知道如何传输和接收字节流。因此,您可以做的是通过 TCP 连接发送一系列字节,其格式设置使接收程序知道如何解释它们并创建一个与发送程序想要发送的对象相同的对象。

该过程称为序列化(以及接收端的反序列化)。 C++ 语言本身并没有内置序列化,因此您需要一些代码来完成它。它可以手动完成,或使用 XML,或通过 Google 的 Protocol Buffers,或通过将对象转换为人类可读的文本并发送文本,或许多其他方式中的任何一种。

看看here了解更多信息。

关于C++ 如何通过套接字发送对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516866/

相关文章:

sockets - 通过 udp 套接字发送 float32 值

windows - Windows 如何决定将哪个设置/模板(Internet 与数据中心)应用于 TCP 连接?

python - C TCP Echo Server - 数据仅在 close() 时显示

c++ - 在 C++ 中输入大货币值

C++ strcpy内存泄漏

c++ - int* const* foo(int x);是一个有效的 C 函数原型(prototype)。你怎么 "read"这个返回类型?

java - Apache ActiveMQ 临时存储限制警告?

c++ - 我应该使用什么数据结构来为数据库/表建模?

java - 部署 Java 应用程序时处理安全性

php - PHP套接字服务器: read all input