2012-05-27 24 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变量中。

相关问题