2016-08-01 93 views
-1

我目前使用C++編寫了一個服務器/客戶端實現,其中兩個客戶端連接到服務器。我期望從以前的經驗(我是C++的新手),每個客戶端(和服務器)都有一個事件處理程序,並且當客戶端想要發送消息到服務器或客戶端已收到來自服務器的消息。您可以將其視爲聊天服務器;客戶端的「傳出」事件可能是由用戶在控制檯中輸入內容觸發的,而「傳入」事件可能是通過從服務器接收數據來觸發的。C++中的網絡事件處理

在C++中是否有標準的編碼方式?理想情況下,我希望爲每個可能的事件類型註冊回調函數,並且在接收到每個事件時將註冊的回調函數作爲上下文傳遞給事件處理函數,以便我可以在每個事件的特定處理函數中處理每個事件。當然,一旦事件得到處理,我希望我的程序重新回到它的事件循環中。

任何想法?我對事件驅動的編程風格非常滿意,所以如果可能的話,寧願保持這種方式,而不是學習全新的範例。

回答

0

C++沒有內置的事件處理程序系統(不像C#和delegates),但有很多庫可以做到這一點。 libsigc++ is one of them

因此,您用於聯網的任何庫都必須提供事件處理代碼,無論是自己的還是使用其他庫。如果你正在推出自己的網絡代碼,我真的認爲創建自己的事件處理代碼並不是那麼困難,但我可能是瘋了。