Getremotesocket Address возвращает URL и IP-адрес вместе

#java #sockets

#java #сокеты

Вопрос:

Я создаю http-клиент с использованием сокета. getInetAddress и getremotesocket Address оба возвращают URL и ip-адрес вместе. Как мне опустить URL или ip-адрес, чтобы получить только один из них?

 import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;

public class socketv1 {
    public static void main(String[] args) throws Exception {
        InetAddress addr = InetAddress.getByName("www.google.com");
        Socket socket = new Socket(addr, 80);
        boolean autoflush = true;

        System.out.println("URL requested: "   socket.getInetAddress());
        System.out.println("Client: "   socket.getLocalAddress()   " "   socket.getLocalPort());
        System.out.println("Server: "   socket.getRemoteSocketAddress()   " "   socket.getPort());


        PrintWriter out = new PrintWriter(socket.getOutputStream(), autoflush);
        BufferedReader in = new BufferedReader(

                new InputStreamReader(socket.getInputStream()));

        // send an HTTP request to the web server
        out.println("GET / HTTP/1.1");
        out.println("Host: www.google.com:80");
        out.println("Connection: Close");
        out.println();

        // read the response
        boolean loop = true;
        StringBuilder sb = new StringBuilder(8096);
        while (loop) {
            if (in.ready()) {
                int i = 0;
                while (i != -1) {
                    i = in.read();
                    sb.append((char) i);
                }
                loop = false;
            }
        }
        System.out.println(sb.toString());
        socket.close();
    }
}
  

Ожидается:

Запрошенный URL-адрес: www.google.com

Клиент: 192.168.1.110 56495

Сервер: 216.58.196.132 80

Актуально:

Запрошенный URL-адрес: www.google.com/216.58.196.132

Клиент: /192.168.1.110 56495

Сервер: www.google.com/216.58.196.132:80 80

Комментарии:

1. Нет, это не так. Он возвращает имя хоста и IP-адрес. URL отсутствует.

Ответ №1:

 System.out.println("URL requested: "   socket.getInetAddress().getHostName());
System.out.println("Client: "   socket.getLocalAddress().getHostAddress()   " "   socket.getLocalPort());
System.out.println("Server: "   socket.getInetAddress().getHostAddress()   " "   socket.getPort());