我正在開發一個基本的婚介服務器。其基本過程是這樣的:發送和recv在不同的線程
- 客戶端連接到服務器,報表客戶的名字和比賽的,他們正在尋找
- 服務器報告回所有可能的匹配
- 客戶選擇符合他/她這類型願與
- 服務器配對相匹配的兩個客戶端
的問題是,每個客戶端連接的時間,我需要對所有可能的匹配報告這個新的客戶端,並報告所有可能匹配到新的連接客戶端(因此,無法匹配的客戶端必須始終準備好來自服務器的recv
)。與此同時,客戶可以在任何時候選擇一個匹配,或者斷開(因此,客戶端必須隨時準備send
和服務器必須準備recv
)
我懷疑真正解決這個問題使用線程,爲客戶端和服務器提供背景recv
線程,以及與用戶交互的主線程send
線程。
所以我有兩個問題與此:
- 是將它保存到
send
和recv
同時用同一個套接字連接上不同的線程? - 這是甚至正確的方式來處理這個?
(標記爲C++和OBJ-C,因爲服務器是建立在C++和客戶端是OBJ-C)
我知道你說這個項目並不特定於Objective-C,但是這些平臺提供了Grand Central Dispatch,它可以建立可擴展的asych。 I/O相對無痛。有一個小的學習曲線,但它適用於偵聽/ recv /發送,並且如果看起來有必要,您可以爲每個套接字創建新的隊列。 – dans3itz 2013-04-10 16:16:46