2011-11-24 109 views
0

我正在使用UDP進行我正在製作的遊戲,但這個問題並不一定是遊戲特定的。我注意到,無論何時我想在本地測試某些東西並使用廣播,UDP客戶端發送一些數據的機會也是同一個客戶端再次接收它,而不是其他客戶端也從同一臺機器連接。使用UDP測試多人遊戲客戶端/服務器?

如何在一臺機器上有效地進行測試和調試,在兩臺機器上使用的情況下進行仿真?

回答

3

兩個選項:

  1. 使用不同的端口,用於交通的每個方向,例如client -> server是端口2001,server -> client是端口2002.
  2. 使用虛擬機。您可以使用VirtualBox或VMWare設置虛擬操作系統,並配有網卡。

後一個選項不需要您更改代碼,但每次更改代碼時都需要將服務器或客戶端應用程序複製到VM。

+1

但是對於UDP,我不能有2個不同的端口,可以嗎? –

+0

此外,當我使用廣播時,這將如何工作? –

+0

是的,你可以有多個端口。只需使用兩個'UdpClient'實例。如果您正在廣播,可以在兩個獨立的頻道上使用多播,或者按照CodeCaster的說法進行播放,並在消息中放置一個「to」標題。 – Polynomial

1

您是否使用某種標識符(用戶名或ID)來檢測誰發送了原始郵件?

檢查收到的消息是否與接收方使用相同的標識符發送,如果是,則丟棄該消息。

+0

由於某些原因(根據我的調試結果),只有一個客戶端收到該消息。另一個沒有。 –

+0

@Mathias怪異的,它應該[可能](http://stackoverflow.com/questions/1694144/can-two-application-listen-to-the-same-port)。 – CodeCaster

+0

我明白了。任何想法,爲什麼它可能會發生?重用地址設置爲true就好了。 –

相關問題