2016-10-03 89 views
0

有一個複雜的插座問題我希望有人可以指向我的示例方向。複雜插座示例

我有一個標準的客戶端/服務器同步消息設置,客戶端發出請求,並阻塞直到收到響應,大家都高興。

但是現在我有另外要求在同步通道,客戶端可以訂閱某些事件,當服務器檢測到它們,在異步發送。我認爲最好的方法是在客戶端發送訂閱消息(並且服務器響應ack)時爲每個客戶端打開第二個連接,但是我無法找到此類設置的在線示例。訂閱某個事件後,客戶端可以繼續向服務器發送/ recv同步消息,同時還在socket2上偵聽有關其訂閱的事件的廣播消息。

什麼這裏有一些最佳做法?

謝謝 -

+2

對不起,但這是一個廣泛的話題;一本涵蓋書籍和大教程。換句話說:使用您最喜愛的搜索引擎來查找此類套接字通信的示例;這樣的問題很可能會導致其他任何事情,但接近要求和downvotes。 – GhostCat

+0

請包括一些代碼,告訴我們你到目前爲止所做的事情,等等。不要只是要求別人給你寫一個程序。這不是Stack Overflow的目的。 –

+0

我想他只是問了「我怎麼能在同一個線程同時有兩個阻塞套接字」這個經典問題。 – selbie

回答

0

兩個選項:

  1. 有它自己的線程每個客戶端套接字運行。這個解決方案的「優點」在於它易於安裝。 「缺點」是,除非您在多線程環境中經驗豐富且舒適,否則代碼可能會很快變得麻煩並且複雜化。

  2. 使用selector。可能你想要什麼。最佳解決方案

+0

是的,我已經在服務器端有一個選擇器,客戶端需要兩個套接字的問題,但他們可能不會同時打開,以及如何將它們關聯在一起... – user1772250

0

你可以看看的Netty:http://netty.io/

它支持同步和異步插槽,並配有你需要建立很好的客戶機/服務器應用程序,而不必擔心管道太多的一切。

鑑於可用庫和框架的數量在那裏,它可能不是推出自己的實現是一個好主意,除非它是一個玩具/學習項目。