从UdpClient收到的UDP包中获取客户端IP

我正在System.Net.Sockets.UdpClient类的帮助下开发一个动作多人游戏。

它适用于两个玩家,因此应该打开服务器并等待传入​​的连接。 另一个玩家输入主机IP并尝试发送“ping”,以确保可以连接并且有一个打开的服务器。 主持人然后用“乒乓球”回应。

一旦游戏运行,两者都必须向对方发送udp消息,因此他们都需要对手的ip地址。

当然服务器也可以输入客户端IP,但这对我来说似乎是不必要的。

当收到“ping”消息时,如何从udp包中获取客户端IP?

这是我的接收代码(等待ping的服务器):

private void ListenForPing() { while (!closeEverything) { var deserializer = new ASCIIEncoding(); IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] recData = udp.Receive(ref anyIP); string ping = deserializer.GetString(recData); if (ping == "ping") { Console.WriteLine("Ping received."); InvokePingReceiveEvent(); } } } 

在您的示例中,当客户端连接时,anyIP IPEndPoint对象将包含客户端连接的地址和端口。

 private void ListenForPing() { while (!closeEverything) { IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0); byte[] recData = udp.Receive(ref anyIP); string ping = Encoding.ASCII.GetString(recData); if (ping == "ping") { Console.WriteLine("Ping received."); Console.WriteLine("Ping was sent from " + anyIP.Address.ToString() + " on their port number " + anyIP.Port.ToString()); InvokePingReceiveEvent(); } } } 

http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx