2012-05-27 19 views
1

我正在創建一個UDP Server.I發現下面的代碼參考從MSDN.Can任何人請解釋他們爲什麼在代碼sample.I第二個ipeEdpoint是發件人(客戶端)的地址使用兩個IPEndPoint對象。但是怎麼可能呢? ?客戶端的IP地址可以是從數據包克提取物,那麼,什麼是這裏的第二個對象的目的,這可能是一個簡單的和愚蠢的問題,但我有點混亂...:d爲什麼使用兩個IPEndPoint?

byte[] data = new byte[1024]; 

    IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050); 

    UdpClient newsock = new UdpClient(ipep); 

    Console.WriteLine("Waiting for a client..."); 

    IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0); 

    data = newsock.Receive(ref sender); 
+2

你看過文檔嗎? [UdpClient.Receive](http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx):「此方法使用IP地址和端口號填充remoteEP參數發件人「。 – dtb

+0

@dtb謝謝但要清除這一個。服務器不知道發件人的IP,直到它收到包。所以我們如何使用預定義的遠程IP端點來調用接收方法。 – Thabo

+1

remoteEP通過引用返回:[ref(C#Reference)](http://msdn.microsoft.com/en-us/library/14akc2c7.aspx)。您傳遞一些IPEndPoint,並且當方法返回時,該變量將包含發件人的IPEndPoint。 – dtb

回答

2

的調用UdpClient構造函數傳入主機端點。接收開始接收數據的過程 - 在另一個過程向您在構造函數UdpClient中創建的終點發出請求之前,它不會執行任何操作。當連接確實發生時,發送數據到您的UdpClient的進程的端點將可用。例如在sender變量中。

相關問題