System.Net.Sockets.UdpClientクラスを使用してアクション マルチプレイヤー ゲームを開発しています。
2 人用なので、1 人がサーバーを開いて接続を待つ必要があります。他のプレイヤーは、ホスト 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();
}
}
}