本日はUnity枠です。
Unityでsocket通信を行う場合は相手のIPアドレスを指定する必要があります。
クラウドなどでサーバーを公開しない場合はIPローカルネットワークもしくはVPN経由でのアドレスを使用する必要がありますが、今回はUnityアプリケーション内でIPアドレスを取得する実装を試します。
〇環境
・Unity2022.3.26f1
・Windows11PC
〇IPアドレスの取得
IPアドレスを取得するにはDns.GetHostEntry(Dns.GetHostName());を使用します。
このの処理は、現在のマシンのホスト名を取得し、そのホスト名に関連付けられたIPアドレス情報を取得します。
今回はforeach文を使用することで1つ1つIPを抽出することができます。
string GetLocalIPAddress()
{
var host = Dns.GetHostEntry(Dns.GetHostName());
foreach (var ip in host.AddressList)
{
if (ip.AddressFamily == AddressFamily.InterNetwork)
{
return ip.ToString();
}
}
throw new System.Exception("No network adapters with an IPv4 address in the system!");
}
ip.AddressFamily == AddressFamily.InterNetworkではIPアドレスのアドレスファミリーがIPv4であるかをチェックしています。
これを使用することで現在のデバイスのIPアドレスを取得できます。

本日は以上です。