我正在System.Net.Sockets.UdpClient类的帮助下开发一款动作多人游戏。
这是两个玩家,所以一个应该打开一个服务器并等待传入的连接。另一个玩家输入主机 IP 并尝试发送“ping”,以确保连接是可能的并且有一个打开的服务器。然后主机以“pong”响应。
一旦游戏运行,双方都必须互相发送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();
}
}
}