【问题标题】:C# game client with asyncronous sockets带有异步套接字的 C# 游戏客户端
【发布时间】:2012-09-22 15:28:00
【问题描述】:

我正在用 C# 开发一个小型在线游戏。目前我正在使用简单的同步 TCP 套接字。但是现在(因为这是某种“学习项目”)我想转换为异步套接字。在客户端我有方法:byte[] SendAndReceive(Opcode op, byte[] data)。 但是当我使用异步套接字时,这不再可能了。 例如我的MapManager 类首先检查地图是否在本地文件夹中(校验和),如果不是,则将从服务器下载地图。

所以我的问题: 有没有什么好的方法可以发送一些数据并获得答案,而无需将接收到的数据保存到某种缓冲区并轮询直到该缓冲区不为空?

【问题讨论】:

    标签: c# sockets asynchronous client


    【解决方案1】:

    您所拥有的代码示例会有所帮助,但我建议为每个带有线程管理器的套接字连接使用一个新线程。 Lmk 如果这有意义或适用于此。 :)

    【讨论】:

      【解决方案2】:

      查看 IO 完成端口和随附的 SocketAsyncEventArgs。它会在数据传输时引发事件,但您仍然需要一个缓冲区。只是没有投票。它快速且非常有效。

      http://www.codeproject.com/Articles/83102/C-SocketAsyncEventArgs-High-Performance-Socket-Cod

      MSDN 上的另一个例子

      http://msdn.microsoft.com/en-us/library/system.net.sockets.socketasynceventargs.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-27
        相关资源
        最近更新 更多