【问题标题】:Are there any articles or advice on creating a C++ chat server with a C# client?有没有关于使用 C# 客户端创建 C++ 聊天服务器的文章或建议?
【发布时间】:2009-04-30 16:32:47
【问题描述】:

我目前的班级正计划创建一个基本的网络游戏,但我们决定承担使用 C# 客户端制作 C++ 服务器的任务。我知道这可能是一项艰巨的任务,但我想知道是否有任何建议可以实现这一目标。

很抱歉,我没有比这更多的信息。我们才刚刚开始,只是想确保在我们拥有的时间范围内这是可能的。

【问题讨论】:

    标签: c# c++ networking client


    【解决方案1】:

    这很好用。 C# 和 C++ 都以多种方式支持 TCP 和 UDP 网络连接。无论是客户端还是服务器都可以正常工作。

    您需要注意的主要问题是决定如何传输数据,并确保您通过线路传递的任何数据包都以相同的方式进行序列化/反序列化。

    如果您在双方都使用相同的语言(或至少是库),这会更简单,即:如果您使用 C++/CLI 作为服务器,并坚持使用一些相同的托管 .NET 工具来工作带数据传输。

    【讨论】:

      【解决方案2】:

      这真的不是什么大问题——只要你想出一个好的协议。线路上的位并不关心用于编写解释它们的程序的语言。

      通过协议,我的意思是你需要清楚地了解谁应该在什么时候做什么,说什么, 以及期待什么。

      例如,一个回显服务器和它的客户端可能期望这样

      • 客户先发言
      • 有一个很好理解的标识符来标记客户端输入的结束
      • 客户端将等待服务器响应后再说话
      • 有一个很好理解的标识符来标记服务器输出的结束。

      等等。由于协议不兼容,在消息之前发送消息长度而不是使用输入结束标识符的不同客户端将无法与原始服务器一起使用。

      协议可以很灵活,但您必须考虑协议本身的灵活性。

      【讨论】:

        【解决方案3】:

        正如大家所说,如果您的聊天协议设计良好,这根本不是问题。只有当您使用诸如使用 BinaryFormatter 之类的技巧将 CLR 对象直接序列化到网络上时,您才会遇到问题...

        我建议您在允许的范围内使用现有协议(例如 IRC)和/或库。

        【讨论】:

          【解决方案4】:

          如果它全部在一个 windows 域中运行,您可以考虑使用 DCOM。否则,我会选择 Web 服务(C++ 的 SOAP 工具包)或者 REST。

          【讨论】:

            【解决方案5】:

            对于聊天程序,请尝试使用聊天协议。

            检查XMPP,看看你是否可以使用它,或者一个精简版。从别人的想法开始从来都不是一个坏主意。至少你可以看到你不喜欢它的地方。 :)

            【讨论】:

              猜你喜欢
              • 2018-10-04
              • 1970-01-01
              • 2011-12-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多