读取Lidgren某个客户的消息



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

//Why doesn't this exist?
NetIncomingMessage message = server.Connections[0].ReadMessage();

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

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