c#中的多客户端,异步套接字,最佳实践?

时间:2008-11-12 18:37:10

标签: c# sockets client-server

我试图更好地理解c#中的tcp / ip套接字,因为我想挑战自己,看看我是否可以创建一个可用于教育目的的有效MMO基础设施(游戏世界,地图,玩家等)我无意成为另一个“OMGZ iz让我的r0x0 MMORPG比魔兽更好!!!”,你知道我在说什么。

无论如何,我想知道是否有人可以阐明一个人如何设计这种系统以及需要什么样的东西,以及我应该注意什么?

我最初的想法是将系统分解为单独的客户端/服务器连接,每个连接(在自己的端口上)执行特定任务,例如更新玩家/怪物位置,发送和接收聊天消息等等。我会更容易处理数据,因为你不总是需要在数据上放一个标题来知道数据包包含哪些信息。

这是否有意义且有用,还是我只是简单地使事情复杂化?

非常感谢您的回复。

4 个答案:

答案 0 :(得分:30)

答案 1 :(得分:2)

我认为你需要在走路前和跑步前爬行。首先得到框架和连接的设计,然后担心可扩展性。如果您的目标是学习C#和tcp / ip编程,那么不要让自己更难。

继续您的初步想法并将数据流分开。

玩得开心,祝你好运

答案 2 :(得分:1)

我会建议针对不同信息的多个连接。我会设计一些协议,其中包含一个包含要处理的信息的标头。尽可能少地使用资源。此外,您可能不希望从客户端向服务器发送各种位置和统计信息的更新。否则,您可能最终会遇到用户可以修改发送回服务器的数据的情况。

假设用户伪造怪物的位置以通过某些东西。我只会更新用户的位置向量和动作。让其余的信息由服务器处理和验证。

答案 3 :(得分:0)

是的,我认为你对单一连接是正确的,当然客户端不会将任何实际数据发送到服务器,更像是简单的命令,如“前进”,“左转”等等。服务器将移动地图上的字符并将新坐标发送回客户端。