mag*_*tic 5 .net c# udp network-programming udpclient
我正在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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
http://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient.receive.aspx