2010-03-25 51 views
3

這是我的第一個問題,所以對不起,如果表格是錯誤的!節儉客戶端 - 服務器多角色

我想使節儉服務器(python)和客戶端(C++)。 但是我需要在兩個方向交換消息。客戶端應該註冊(調用服務器的功能和等待),並且服務器應該在同一個端口上監聽N(N-> 100k)傳入連接(客戶端)。滿足一些條件後,服務器需要調用每個客戶端的功能並收集結果並解釋它們。

我有點困惑,第一個問題是「這可以在Thrift中完成嗎?」? 第二個問題與允許我進行雙向通信的機制有關。我想我會需要兩項服務。一個客戶端的功能與服務器的其他功能。 但我對調用代碼感到困惑。我理解單向通信(從服務器調用函數),但從客戶端調用函數我有一個問題。

任何建議???

謝謝!

+0

你爲什麼用節儉? – compie 2010-03-25 22:09:55

+0

已經提出,我需要爲客戶端和服務器使用不同的語言支持。 – dexter 2010-03-26 09:27:54

回答

1

考慮爲您的客戶端使用boost::asio,但取決於您的C++級別,代碼可能看起來過於密集。

如果你正在尋找一個簡單的例子,來看看: http://www.linuxhowtos.org/C_C++/socket.htm

它包含了服務器端和客戶端的代碼。雙方都創建一個套接字,雙方通信是通過雙方向套接字發佈數據來實現的。服務器端通常是多線程的(每個連接有一個線程)。客戶端可以實現爲一個單線程循環,它可以在查詢套接字的任何傳入信息,執行計算以及將結果發回套接字之間進行交替。

+0

節儉已被提議作爲一種方式來做到這一點... 關鍵點是,他們必須在不同的PL(蟒蛇和C++), ,我只是想知道這可以在Thrift中完成嗎?另外,由於預計會有大量的客戶端,因此應避免在服務器端進行多線程。 – dexter 2010-03-26 09:26:29