ホスト名を入力として受け取り、そのホストの証明書を抽出することになっている関数から、次のコードがあります。リモートホストのIPアドレスを表示する必要があります。「.getInetAdress()」を使用して、リモートホストのIPを返しました:http://docs.oracle.com/javase/1.5.0/docs/api/java/net/Socket.html#getInetAddress()。
SSLSocketFactory factory = HttpsURLConnection.getDefaultSSLSocketFactory();
System.out.println("Starting SSL Socket For "+hostname+" port "+port);
SSLSocket socket = (SSLSocket) factory.createSocket(hostname, port);
//To get the IP for the remote host. Format: (domain name/IP),
//then manually covert it to string
String remoteIP=socket.getInetAddress().toString();
System.out.println("Remote address = " + remoteIP);
socket.startHandshake();
Certificate[] serverCerts = socket.getSession().getPeerCertificates();
たとえば、プログラムを実行すると、ホストは「www.tesco.com」、「。getInetAddress()」になります。このIPを私に返します:88.221.94.232。ブラウザにこのIPを入力しようとすると、URLに「https://」を追加した後でも「無効なURL」が表示されます。一方、「tesco.com」にpingを実行しようとすると、別のIP「212.140.185.177」が表示されます。ブラウザに入力すると、tescoのWebページが開きます。
私は何を誤解していますか?getInetAddress&getHostAddress()以外に、(ソケットを使用せずに)リモートホストのIPアドレスを取得する方法はありますか?