首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Lidgren中读取来自某个客户端的消息

在Lidgren中读取来自某个客户端的消息
EN

Stack Overflow用户
提问于 2015-07-19 09:12:34
回答 1查看 345关注 0票数 0

我正在和Lidgren设置一个游戏,我想知道是否有一种方法可以从某个客户端读取消息,而不仅仅是从整个服务器读取消息,例如-

代码语言:javascript
复制
//Why doesn't this exist?
NetIncomingMessage message = server.Connections[0].ReadMessage();

这样,我就可以将从每个客户端读取数据的操作拆分到它自己的线程中,并拥有一个单独的线程来向每个客户端发送数据。目前在我的服务器中只有一个循环,它读取数据包,我担心比其他客户端更偏爱一个客户端,因为玩家的一些动作需要一段时间才能被其他玩家接收到。我相信分别从每个客户端读取消息会解决这个问题。使用简单的TcpClients,您可以读取每个客户机流而不是整个服务器,我喜欢这个功能,但也依赖于通过Lidgren发送数据包的简单性,我想知道Lidgren是否有类似的功能。

EN

回答 1

Stack Overflow用户

发布于 2015-07-20 21:57:00

您可以在一个线程上读取消息,然后将它们填充到并发安全集合中,例如,connection.Tag消息。然后,每个单独的线程将该连接的消息出队。然而,对于一个我认为是现有代码中的bug的问题,这听起来是一个非常糟糕的解决方案……没有理由在单个线程上读取消息会使任何客户端优先于另一个客户端;消息按到达的确切顺序入队和出列。为每个客户端执行一个线程将创建一大堆同步问题,您在处理收到的消息内容时必须解决这些问题;除非您有非常令人信服的理由,否则我建议您不要这么做。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31497064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档