2016-06-07 82 views
0

我想創建一個三方通信系統,在這個系統中,每一方都有平等的權利,並有兩個溝通渠道給他的合作伙伴。
該程序是分散的,每臺機器運行相同的代碼,其中有三個IP地址的列表,每個代表一臺機器。對於每臺機器,合作伙伴的IP地址通過查看自己的IP地址並使用列表中的其他兩個IP地址來確定。建立沒有服務器的同等客戶端的雙向TCP通信的最佳方式是什麼?

現在有在該機器都被人打開沒有預定的順序,有沒有什麼辦法來控制不是設置它像
其他的TCP通信「,如果你想在IP地址說話高於你的自己,連接到服務器,否則你是服務器,並接受套接字'?

最後,我想要一個TCPread(port),每發送一封來自任何IP的消息和一個發送消息的TCPwrite(port, ip, message)就會觸發。

我的想法是一個TCP處理程序,它存儲了我爲每個端口獲取的所有套接字,我計劃在每個端口使用一個線程在程序中使用它。然後每次執行讀取或寫入操作時,它都會檢查處理程序中是否有端口和IP地址的套接字,如果沒有,則將套接字發送到IP並等待響應...我不認爲我已經完全理解整個TCP事物。

+0

那麼明白了一件事......總有將是'一個服務器「...但是從你想要的東西像是動態是.. – 3kings

+0

你有沒有調查http://jgroups.org/? – Mark

+0

我知道那裏*總是會是一個服務器,我只是不知道在哪裏以及如何協商哪一方在這種情況下做什麼。 @Mark:這看起來有點過頭了,溝通意圖是非常基本的。 –

回答

1

如果你不關心你可以做以下的連接數:

  • 每個對等開放的端口和監聽傳入連接
  • 嘗試建立每個連接隨着時間
  • 一段同行

因爲你會得到每個對等體之間的兩個連接。現在你可以使用它們方式如下:

  • 傳出連接用於發送消息
  • 傳入連接用於接收消息
+0

我不知道你可以使用相同的端口爲兩個套接字到同一個客戶端!我會在今天晚些時候嘗試,並將返回 –

+0

@ nO_OnE_910您不會對兩個套接字使用相同的端口。一個(用於傳出連接)是動態的,你不需要確切的值... –

相關問題