以下の内容はhttps://redhologerbera.hatenablog.com/entry/2024/12/23/215542より取得しました。


Unityで特定のIPアドレスのみ取得表示する

本日はUnity枠です。

Unityでsocket通信を行う場合は相手のIPアドレスを指定する必要があります。

クラウドなどでサーバーを公開しない場合はIPローカルネットワークもしくはVPN経由でのアドレスを使用する必要があります。前回はIPアドレスを取得する実装を行いましたが、この時に表示されるIPが複数取得されていた場合、一番最初のIPが表示されます。

redhologerbera.hatenablog.com

 どういうことかというとVPNを使用している場合などWi-fiなどで使用しているIPアドレスとは別に複数のIPが設定されていることがあります。

具体的にはTailScaleを使用した場合は100.から始まるIPアドレスが用いられます。

redhologerbera.hatenablog.com

redhologerbera.hatenablog.com

今回は前回の実装を改良して特定のIPが取得されるようにしていきます。

〇環境

・Unity2022.3.26f1

・Windows11PC

〇特定のIPアドレスのみ表示

今回はいきなりコードから共有します。

      string GetLocalIPAddress()
        {
            var host = Dns.GetHostEntry(Dns.GetHostName());
            string fallbackIP = null;

            foreach (var ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    string ipString = ip.ToString();
            
                    // Tailscale特有のIPアドレス(100.x.x.x)を優先
                    if (ipString.StartsWith("100."))
                    {
                        return ipString;
                    }

                    // Tailscale以外のIPv4アドレスを一時的に保持
                    fallbackIP = ipString;
                }
            }

            // TailscaleのIPアドレスが見つからない場合、他のIPv4アドレスを返す
            if (fallbackIP != null)
            {
                return fallbackIP;
            }

            throw new System.Exception("No network adapters with an IPv4 address in the system!");
        }

今回はTailScaleのIPアドレスが100.xxであることがわかっていたため、string.StartsWith()は文字列が引数の文字列から始まるかを判定するものです。

つまり100.から始まるIPを取得しています。

本日は以上です。

 if (ipString.StartsWith("100."))
                    {
                        return ipString;
                    }



以上の内容はhttps://redhologerbera.hatenablog.com/entry/2024/12/23/215542より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14