簡體   English   中英

閱讀來自Lidgren的某個客戶的消息

[英]Read message from a certain client in Lidgren

我正在與Lidgren一起玩游戲,我想知道是否有一種方法可以從某個客戶端(而不是整個服務器)讀取消息,例如-

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

這樣,我將能夠從每個客戶端讀取數據分成自己的線程,並有一個單獨的線程向每個客戶端發送數據。 當前,我的服務器中只有一個循環讀取數據包,我擔心一個客戶端比另一個客戶端更受青睞,因為玩家的某些動作需要一段時間才能被其他玩家接收。 我相信與每個客戶分開閱讀郵件可以解決此問題。 使用簡單的TcpClients,您可以從每個客戶端的流中讀取而不是從整個服務器中讀取,我喜歡此功能,但也依賴於通過Lidgren發送數據包的簡單性,並且想知道Lidgren是否具有類似的功能。

您可以在一個線程上讀取消息,然后將其填充到並發安全集合中,例如,connection.Tag消息。 然后,每個單獨的線程將使該連接的消息出隊。 然而; 對於我認為是現有代碼中的錯誤的問題,這聽起來像是一個非常糟糕的解決方案。沒有理由在單個線程上讀取消息會使任何客戶端勝過另一個客戶端。 消息按照它們到達的確切順序入隊和出隊。 對每個客戶端執行一個線程將產生一堆同步問題,您必須根據接收到的消息的內容采取行動; 除非您有非常令人信服的理由,否則我將建議您這樣做。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM