最短の方法は次のとおりです。
try {
InetAddress thisIp =InetAddress.getLocalHost();
System.out.println("IP:"+thisIp.getHostAddress());
}
catch(Exception e) {
e.printStackTrace();
}
ただし getLocalHost
、ドキュメントには次のように書かれています。
セキュリティマネージャがある場合、そのcheckConnectメソッドは、ローカルホスト名と引数として-1を指定して呼び出され、操作が許可されているかどうかを確認します。操作が許可されていない場合、ループバックアドレスを表すInetAddressが返されます。
場合によってInetAddress.getLocalHost()
は、インターフェイスを参照せず、定数127.0.0.1(IPv4の場合)を返すだけです)
私NetworkInterface.getNetworkInterfaces
はあなたがすべての可能性を列挙するために必要なものだと思います。これは、仮想アドレスを表示しないが、「メイン」インターフェースで機能する例です。
import java.net.*;
import java.util.*;
public class Test
{
public static void main(String[] args)
throws Exception // Just for simplicity
{
for (Enumeration<NetworkInterface> ifaces =
NetworkInterface.getNetworkInterfaces();
ifaces.hasMoreElements(); )
{
NetworkInterface iface = ifaces.nextElement();
System.out.println(iface.getName() + ":");
for (Enumeration<InetAddress> addresses =
iface.getInetAddresses();
addresses.hasMoreElements(); )
{
InetAddress address = addresses.nextElement();
System.out.println(" " + address);
}
}
}
}
または:
これを使用してみてください(最初の出力はPC名の後のIPである必要があります):
InetAddress[] localaddr;
String computername = null;
try {
computername = InetAddress.getLocalHost().getHostName();//get pc name
} catch (UnknownHostException ex) {
ex.printStackTrace();
}
System.out.println(computername);
try {
localaddr = InetAddress.getAllByName(computername);
for (int i = 0; i < localaddr.length; i++) {
System.out.println("\n" + localaddr[i].getHostAddress());
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
参照: