2012-03-04 104 views
1

上運行的客戶端和服務器我有一個客戶端和服務器應用程序使用UDP端口25565. 爲了在同一臺機器上運行這些,因爲只有一個應用程序可以自己綁定到端口25565,這是否意味着它我需要使用兩個獨立的端口在應用程序之間傳輸數據?同一臺機器

我已經記下 -

客戶端 - > 25565 - >服務器

客戶< - 25566 < - 服務器

這是唯一的解決辦法還是有另一種方式處理這個?

回答

4
  • 您的服務器應用程序打開一個端口並等待客戶端連接。
  • 客戶需要知道這個端口提前,因此它可以建立到所需服務的連接。
  • 客戶端可以使用任何可用端口來啓動此連接(最好使用端口> 1000)。
  • 服務器認爲在客戶端使用該進來的數據包至極端口,因此它會發送anwser它。無需在您的設計中指定它。服務器IP,服務器端口,客戶端IP,客戶端口:
  • 握手之後的TCP/IP連接,然後通過這些4個值來標識。
  • 沒有其他連接可能具有相同的四個值。

要回答你的問題。 TCP/IP連接是雙向的,一旦建立,服務器就可以將數據發送到客戶端,反之亦然。

我想提請這樣的方案:

服務器端口25565 < - >客戶端口25566(或其他任何端口)

+0

我沒有使用TCP,我正在使用UDP。 – ctor 2012-03-04 22:49:49

+0

我猜你知道UDP是不安全的,你可以鬆散的數據包,他們可以錯誤的順序到達,你不能通過網關從服務器到客戶端和一切......但服務器和客戶端都在同一臺機器上。使用UDP,您的客戶端可以打開任何端口來偵聽並告訴服務器在那裏發送。你的方案適用於UDP。 – bokan 2012-03-04 23:22:46

+0

是的,我知道這不安全,但它不應該是我的目標的問題。謝謝:) – ctor 2012-03-05 00:15:59

2

哦,不。只有服務器需要偵聽端口25565 - 客戶端將只連接到該端口。沒有理由指定端口應該使用哪個客戶端連接到該端口。而且,一旦服務器接受了連接,端口就可以監聽其他請求。

+0

我忘了提及我正在使用UDP套接字。 – ctor 2012-03-04 22:31:41

0

獨立的UDP端口的整點是爲了消除應用聽了之間的衝突傳入數據包。改變這些端口中的一個可能是最好的解決方案。

但是,如果您確實希望這兩個程序在相同的端口上偵聽,您將需要使用虛擬網絡接口,如TUN/TAP(有一個Windows port)。然後這兩個應用程序將綁定到具有相同號碼的端口,但在不同的網絡接口上。

+0

更改端口似乎是最簡單的選擇,謝謝:) – ctor 2012-03-05 00:17:01

相關問題