将对象传递给网络数据包处理程序? 我在C++中已经写了一段时间的网络服务器,现在已经开始了寻找正确和容易处理所有数据包的方法。

将对象传递给网络数据包处理程序? 我在C++中已经写了一段时间的网络服务器,现在已经开始了寻找正确和容易处理所有数据包的方法。,c++,networking,C++,Networking,到目前为止,我已经能够弄清楚它是什么类型的数据包,但是现在我需要弄清楚如何将所需的数据提供给处理函数 我的想法如下: 有一个函数指针的映射,操作码作为键,函数指针作为值 所有这些函数都有两个参数,packet和ObjectAccessor ObjectAccessor类包含各种函数来获取各种项目,例如用户等 也许还可以传递用户的guid,以便我们可以从objectaccessor获取它 我想知道其他人提出的各种实现,所以请对这个想法发表评论,并用您自己的实现回复 谢谢,Xeross过去我创建

到目前为止,我已经能够弄清楚它是什么类型的数据包,但是现在我需要弄清楚如何将所需的数据提供给处理函数

我的想法如下:

  • 有一个函数指针的映射,操作码作为键,函数指针作为值
  • 所有这些函数都有两个参数,packet和ObjectAccessor
  • ObjectAccessor类包含各种函数来获取各种项目,例如用户等
  • 也许还可以传递用户的guid,以便我们可以从objectaccessor获取它
我想知道其他人提出的各种实现,所以请对这个想法发表评论,并用您自己的实现回复


谢谢,Xeross过去我创建了一条XML消息,并在消息中提供了一个命令字段。
因为我只有很少的命令,所以我只使用了一堆if语句来查看命令是什么,然后根据命令调用一个函数,传递XML的有效负载部分。

您可能需要看看一些现有的解决方案。是一个简单的消息传递系统,您可能想看看。(作为您当前拥有的功能的替代,或了解如何注册/调用处理程序函数)


我还没有看过YAMI4,所以我不能对此发表评论,但是Yami3.x非常容易安装并快速运行,文档应该会让您了解如何访问处理程序函数。

我已经实现了一个处理程序类和一系列函数指针,很好地工作。

现有的实现如何,或者您这样做是为了学习?您是否可以/会使用现有的解决方案进行序列化/反序列化,而不是自己实现?这不是(反)序列化,这已经在起作用了,这是关于处理数据包,以及如何使所有需要的对象对数据包处理函数可用