【发布时间】:2009-04-30 16:32:47
【问题描述】:
我目前的班级正计划创建一个基本的网络游戏,但我们决定承担使用 C# 客户端制作 C++ 服务器的任务。我知道这可能是一项艰巨的任务,但我想知道是否有任何建议可以实现这一目标。
很抱歉,我没有比这更多的信息。我们才刚刚开始,只是想确保在我们拥有的时间范围内这是可能的。
【问题讨论】:
标签: c# c++ networking client
我目前的班级正计划创建一个基本的网络游戏,但我们决定承担使用 C# 客户端制作 C++ 服务器的任务。我知道这可能是一项艰巨的任务,但我想知道是否有任何建议可以实现这一目标。
很抱歉,我没有比这更多的信息。我们才刚刚开始,只是想确保在我们拥有的时间范围内这是可能的。
【问题讨论】:
标签: c# c++ networking client
这很好用。 C# 和 C++ 都以多种方式支持 TCP 和 UDP 网络连接。无论是客户端还是服务器都可以正常工作。
您需要注意的主要问题是决定如何传输数据,并确保您通过线路传递的任何数据包都以相同的方式进行序列化/反序列化。
如果您在双方都使用相同的语言(或至少是库),这会更简单,即:如果您使用 C++/CLI 作为服务器,并坚持使用一些相同的托管 .NET 工具来工作带数据传输。
【讨论】:
这真的不是什么大问题——只要你想出一个好的协议。线路上的位并不关心用于编写解释它们的程序的语言。
通过协议,我的意思是你需要清楚地了解谁应该在什么时候做什么,说什么, 以及期待什么。
例如,一个回显服务器和它的客户端可能期望这样
等等。由于协议不兼容,在消息之前发送消息长度而不是使用输入结束标识符的不同客户端将无法与原始服务器一起使用。
协议可以很灵活,但您必须考虑协议本身的灵活性。
【讨论】:
正如大家所说,如果您的聊天协议设计良好,这根本不是问题。只有当您使用诸如使用 BinaryFormatter 之类的技巧将 CLR 对象直接序列化到网络上时,您才会遇到问题...
我建议您在允许的范围内使用现有协议(例如 IRC)和/或库。
【讨论】:
如果它全部在一个 windows 域中运行,您可以考虑使用 DCOM。否则,我会选择 Web 服务(C++ 的 SOAP 工具包)或者 REST。
【讨论】:
对于聊天程序,请尝试使用聊天协议。
检查XMPP,看看你是否可以使用它,或者一个精简版。从别人的想法开始从来都不是一个坏主意。至少你可以看到你不喜欢它的地方。 :)
【讨论】: