【问题标题】:VB.Net - Networking method for client/server gameVB.Net - 客户端/服务器游戏的联网方法
【发布时间】:2009-08-14 22:07:01
【问题描述】:

我的第一个问题,请放轻松:)

我已经开发了多年,并且使用 Web 服务编写了太多的应用程序(主要是 Web 应用程序) - 我对 SOAP/WSDL/等很满意...我也曾经编写过 TCP/IP 客户端-服务器使用旧版 Winsock 的应用程序。

我有点无聊,正在寻找一个新项目来扩展我的技能,所以决定尝试做一个游戏或某种服务器监控和远程控制应用程序

我还没有决定哪一个,这个问题的答案有望为我的决定提供参考。

我想要的是一些关于我应该寻找哪些方法来处理通信的建议。

假设我现在正在玩这个游戏 - 我想要低延迟的双向通信,并且能够处理尽可能多的同时连接。

我考虑过 Web 服务,但它似乎有很多开销 - 特别是因为我需要客户端也公开一个。

TCP/IP 可以完成这项工作,但它似乎有点低级,而且我还没有很多优点,比如定义。大概我需要为通信等制定一个新协议......我也不确定我如何让一个客户使用多个渠道来获取并发信息 - 例如聊天和更新位置信息。我可以尝试以某种方式对其进行多路复用,但我最初的想法是:排队看起来很混乱

.Net 远程处理——我还没有真正接触过这么多。似乎比 web 服务具有更低的开销和更大的灵活性,但我不知道如何正确评估。

非常感谢您提供的任何意见(以及指向教程的链接会很棒)

提前感谢您的帮助

编辑:我有一个答案指向一个 UDP 库。 UDP适合这个吗?对于不需要历史记录的位置信息/类似信息,我可以看到这是多么有利,但对于聊天,丢失的数据包可能是一个问题 - 还是我手动发回收据确认?如果是这样,我不是为了有限的优势而复制 TCP/IP 功能吗?

如果这是扩展问题的不正确方式,我们深表歉意 - 对此的指导也很感激 :)

【问题讨论】:

    标签: networking communication tcp


    【解决方案1】:

    如果您是最新的 .NET 3.5 SP1,那么您应该使用 WCF。您说您不想使用 Web 服务,我假设您的意思是您不想使用 SOAP over HTTP。 WCF 所做的远不止 SOAP over HTTP。特别是,它可以使用相同的基础设施在 TCP/IP 上执行二进制。它还支持点对点。

    【讨论】:

    • 谢谢,我已经谈到了 WCF,但它只是充当 SOAP Web 服务——我将研究 P2P 方面。这很可能就是我正在寻找的 - 谢谢。
    • 请记住,您构建 WCF SOAP 服务的绝大多数方式正是您使用二进制和 TCP/IP 访问服务的方式。事实上,单个服务可以同时处理 SOAP 和 TCP/IP 以及任何数量的其他传输,并且在很大程度上甚至不会注意到。
    • 谢谢 - 这看起来很有希望,我喜欢它的灵活性。
    【解决方案2】:

    看看像 Lidgren 这样的东西,看看它是如何工作的。它是用 c# 编写的,因此可以与 VB.Net 一起使用

    Lidgren 是一个socket wrapper,我在一些小型多人游戏中使用过,(主要是使用header 来说明包类型。即第一个字节表示包类型,

    Lidgren

    【讨论】:

    • 感谢您的快速回复 - 我正在查看它。我还想通过编辑来扩展我将要解决的问题(包括有关 UDP 的问题)。我希望这是正确的方法......
    • 是的,据我所知,我也不是 SO 专家:P
    • stackoverflow.com/faq开始,你们俩都可以成为 SO专家。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2013-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多