#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());