C# C+中的客户机+;,C语言中的服务器#

C# C+中的客户机+;,C语言中的服务器#,c#,c++,client,client-server,C#,C++,Client,Client Server,我正在制作一个MMO游戏。我将使用TCP客户端/服务器通信。起初我的方法是在C++中同时编写客户机和服务器,但现在我开始思考,如果在C语言中编写服务器不是更容易。p> 客户端将被写入C++,因为它需要跨平台,但服务器总是在Windows系统上。我认为选择C是因为它有一个更简单的处理线程的方法,内置的XML解析器等等。 我的问题是这是否是一个好的解决方案?性能对我来说仍然很重要,所以如果选择C++对C++的影响会对性能产生很大的影响,我会坚持C++。p> 如果你认为这是个好主意,你知道有没有任何教

我正在制作一个MMO游戏。我将使用TCP客户端/服务器通信。起初我的方法是在C++中同时编写客户机和服务器,但现在我开始思考,如果在C语言中编写服务器不是更容易。p>

客户端将被写入C++,因为它需要跨平台,但服务器总是在Windows系统上。我认为选择C是因为它有一个更简单的处理线程的方法,内置的XML解析器等等。 我的问题是这是否是一个好的解决方案?性能对我来说仍然很重要,所以如果选择C++对C++的影响会对性能产生很大的影响,我会坚持C++。p> 如果你认为这是个好主意,你知道有没有任何教程可以提供C语言服务器和C++客户端之间的通信?p>


谢谢回答。

< P> C++与C的性能差异并不像你想象的那么大。
对于通信,如果您对性能感到困扰,请使用套接字和类似或的东西。如果您不太在意性能,请使用HTTP和JSON或XML。

为客户端和服务器使用不同的语言会迫使您用不同的语言重写很多内容,我个人希望保持同步:

  • 序列化和反序列化,当然可以使用一些库来实现。谷歌协议缓冲区出现在我的脑海中,因为它们被明确地设计为使用“跨语言”来节省带宽和工作
  • 几乎游戏的每个实体都或多或少有一组共同的属性。当使用不同的语言时,您必须手动保持这些同步,并且可能需要编写两次。对于更复杂的setter,这尤其令人讨厌;)
  • 您需要一些共享逻辑来“模拟”客户端上的服务器应答。在客户端预测服务器如何实现“快速”行为非常重要。还有什么能比在服务器和客户端使用相同的代码库更好地模拟这种行为呢

不过,在服务器上使用C#时,我看不出性能有什么大问题。这不应该是一个严重影响您决策的方面。

您的问题与源代码无关,因此stackoverflow不是合适的地方。换个角度考虑。关于交流,我建议使用一个文本序列化格式,如JSON或YAML,并精确地记录协议。在C++中编写一个应用程序使其更便携吗?我担心这个问题是相当主观的和偏离主题的。谢谢您的回答,马库斯!现在我知道这些是主要的缺点。谢谢你的回答,罗杰。