2011-10-28 245 views
0

我已經使用純套接字創建了自己的VOIP服務器和客戶端。所有的客戶端都可以發送語音數據到服務器,服務器可以收到音頻數據並且可以實時播放;但是如果客戶想要與特定客戶進行溝通呢?我怎麼做?如何將數據從一個客戶端發送到另一個客戶端?

編輯:例如,客戶端A連接到C(它是服務器),客戶端B連接到C.如何將數據發送到B(無論是否將數據發送到C)?

P.S.I可以顯示我的代碼,如果需要的話。或者如果我沒有具體告訴我,我會詳細說明我的問題。

+0

你問一個整個設計。我認爲你應該縮小你的問題範圍。 –

回答

1
  • A連接到C
  • B連接到C
  • AC如果B可用
  • C檢查,他可以爲B
  • 如果溝通,使
    • A發送數據爲C它是B
    • C將數據傳送到B
  • 如果不是
    • A嘗試以後問C如果B可用
+0

謝謝,我認爲這將完美工作。如果我在使用這種方法時遇到問題,我會用一些源代碼發佈另一個問題。 –

+0

非常好,如果你想要雙倍數據傳輸整體和傳輸時間+吃一些服務器的CPU時間 –

+0

@LB:我認爲,因爲@DanielLopez調用'C'服務器和'A','B'客戶端,所有數據交換**必須**通過服務器。但是,如果'A'可以直接與'B'交談,那麼最好這樣做。不能在這裏提供最佳選擇的建議,需要對該項目進行更多描述。 – Otiel

1

您的服務器可以作爲協調器工作。 A可以從您的服務器請求Client B's IP & listening port,然後直接連接到該地址。

+0

我正在使用TcpListener和TcpClient,我如何從TcpClient對象請求IP地址? –

+0

@DanielLopez:爲此提出一個新問題。 – Otiel

+0

您應該實施更高級別的協議。比如消息(例如,一個序列化的類)「詢問客戶的信息」,「返回信息」,「發送語音數據」等。我認爲你應該閱讀一些關於RPC的文檔。 http://en.wikipedia.org/wiki/Remote_procedure_call –

相關問題