我需要編寫一種代理服務器,我的設計有點像這樣: 1.套接字服務器(使用Windows事件選擇模型)。程序有一個監聽器線程監聽網絡事件。
2.客戶列表(目前由socketid索引)。 3.套接字服務器接受一個新連接,然後爲每個客戶端創建一個新線程。新線程創建一個套接字連接來結束目標服務器(需要一個持久連接)。如何將消息傳遞給線程
我已經寫了套接字服務器,工作正常。我的問題是當新的消息從客戶端進入時,我如何將此消息傳遞到相關的線程(因此消息可以發送到目標服務器)。
在我的服務器中,我從客戶端消息中獲取最終目標服務器的地址。我可以從客戶端套接字列表中查找客戶端套接字。但是,我該如何將消息發送到正確的線程?
在我到目前爲止所使用的線程中,線程函數只是運行一個循環。我是否調用線程函數,將消息作爲參數傳遞給它?
任何人都有如何做到這一點好主意?
我可以不只是有一個客戶端套接字ID和目標服務器套接字ID的地圖。
接受客戶端套接字後,連接到目標服務器併發送消息。將目標服務器套接字標識保存到地圖中。
因此,當從客戶端獲取新的msg時,在映射中查找dest服務器並將消息發送到必需的服務器套接字。
其實,我是否需要使這個多線程?
爲什麼要使用發送線程呢?只要有線程接收到客戶端的'消息',就可以直接使用傳出套接字。否則沒有乾淨的機制將上下文切換到特定的線程,而不使用每個線程的隊列。 –