【问题标题】:Remoting using a specific object使用特定对象进行远程处理
【发布时间】:2012-11-13 01:25:51
【问题描述】:

我一直在玩 XNA,想尝试让游戏在 LAN 上运行,但事实证明,要做到这一点,我需要使用一种叫做远程处理的东西。无论如何,我设法让它工作

    public class TestObject : MarshalByRefObject
{
    int testInt;

    public Level()
    {
        this.testInt = 5.Zero;
    }


    public int GetNumber()
    {
        return testInt;
    }
}

和我的服务器 通道 = 新 TcpChannel(4444); ChannelServices.RegisterChannel(channel, false);

        Type type = Type.GetType("Domain.Level,Domain");

        RemotingConfiguration.RegisterWellKnownServiceType(type,
            "FirstRemote",
            WellKnownObjectMode.Singleton);

和客户

      this.chanel = new TcpChannel();
      ChannelServices.RegisterChannel(chanel, false);
      this.testObject = (TestObject)Activator.GetObject(typeof(TestObject),
         "tcp://localhost:4444/FirstRemote");

这样可行,但问题是服务器无法访问该对象,我无法创建一个带参数的构造函数,因此无法初始化测试对象上的任何数据。如何制作一个对象,然后让它使用它而不是制作一个新对象?

【问题讨论】:

  • 为什么需要使用Remoting?它几乎已被 WCF 取代。
  • WCF?那会做我想要的吗?我不完全知道它是什么或听说过它。
  • 一般来说,WCF 会做你想做的事。我不是 XNA 专家,所以 XNA 可能不支持 WCF。你必须检查一下。见stackoverflow.com/tags/wcf/info
  • 显然 WCF 只支持 HTTP 并且 HTTP 意味着比 ICP 慢。看起来 WCF 更多地用于基于 Web 的东西,而我只需要 LAN 的东西。
  • WCF 支持许多协议,包括 TCP。它用于所有网络场景。 XNA 上的 WCF 可能仅支持 HTTP 和 HTTPS。如果您不需要绝对最高速度,那么这不是问题。如果您的应用程序需要尽可能高的速度,那么您可以使用 WCF 创建自己的传输,使用 TCP/IP,然后在客户端和服务端使用它。这为您提供了最佳速度,同时只为您提供了一段代码来支持(传输)。您的更高层将是 WCF,它可能会持续至少十年。

标签: c# xna remoting


【解决方案1】:

不幸的是,您可能会发现游戏中的实时网络通信比您当前的方向更复杂。大多数游戏使用持久套接字连接在客户端之间来回传递信息,而其他方法通常对于实时网络来说太慢了。

我建议查看 Lidgren 网络库。 Lidgren 对网络通信进行了抽象,并使得将数据序列化为非常小且快速的数据包变得更加容易,这些数据包可以通过 UDP 和 TCP 的多种可靠性模式进行传输。你可以在这里找到 Lidgren 项目: http://code.google.com/p/lidgren-network-gen3/

附带说明一下,在这里阅读虚幻引擎如何进行联网对我来说非常有价值: http://udn.epicgames.com/Three/NetworkingOverview.html

我写了一篇博客,展示了一些关于实现客户端/服务器模式的具体细节: http://syndicatex.com/flatredball/flatredball-and-lidgren-multiplayer-networking/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-09
    • 1970-01-01
    相关资源
    最近更新 更多