相关疑难解决方法(0)

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

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

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

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

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

非常感谢您的回复.

c# sockets client-server

17
推荐指数
1
解决办法
9987
查看次数

面向对象的网络

我写了很多网络系统,并且很清楚网络是如何工作的.但是我总是最终拥有一个数据包接收功能,这是一个巨大的switch语句.这开始转向我.我宁愿采用一种优雅的面向对象的优雅方式来处理接收数据包,但每当我尝试提出一个好的解决方案时,我总会遇到问题.

例如,假设您有一个网络服务器.它只是在那里等待回应.数据包进入,服务器需要验证数据包,然后需要决定如何处理它.

目前我一直在通过打开标头中的数据包ID然后拥有一大堆处理每种数据包类型的函数调用来实现这一目标.对于复杂的网络系统,这会产生一个单一的switch语句,我真的不喜欢这样处理它.我考虑过的一种方法是使用处理程序类的映射.然后我可以将数据包传递给相关的类并处理传入的数据.我遇到的问题是我需要一些方法来使用地图"注册"每个数据包处理程序.这意味着,通常,我需要创建类的静态副本,然后在构造函数中将其注册到中央数据包处理程序.虽然这有效,但它看起来似乎是处理它的一种不雅和繁琐的方式.

编辑:同样,理想的是拥有一个兼顾两种方式的漂亮系统.即一种类结构,它容易处理发送与接收它们相同的数据包类型(显然通过不同的功能).

有人能指出我更好的方法来处理传入的数据包吗?非常感谢链接和有用的信息!

如果我没有很好地描述我的问题而道歉,因为我无法很好地描述它也是我从未设法提出解决方案的原因.

c++ oop networking packets

16
推荐指数
1
解决办法
3777
查看次数

用于实验协议设计和开发的工具?

是否有任何开源,高级工具可以使用GUI促进和简化实验网络协议(TCP/UDP)的开发?

基本上,像动态状态机编辑器,可以让你定义"数据包","消息","状态","验证器","处理程序"等.

优选地,这样的工具将足够全面以处理协议的所有相关方面(即客户端和服务器),以便高级协议描述可以被序列化为XML/RDF文件,其中它可以用于动态创建用于实现协议的应用程序代码(即在Python中).

user-interface state protocols network-protocols custom-protocol

8
推荐指数
1
解决办法
3249
查看次数