【发布时间】:2011-08-23 07:38:42
【问题描述】:
我正在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();
}
}
}
【问题讨论】:
标签: c# .net network-programming udp udpclient