0
자바 소켓에 대해 공부하고 있습니다. HTTP 요청을 보내고 응답을 받기위한 간단한 tcp 클라이언트를 만들었습니다. 그러나 클라이언트를 실행 한 후에는 기다리고 응답이 없습니다. 여기소켓 연결에서 응답을 얻을 수 없습니다.
public static void connect(){
try (
Socket socket = new Socket("localhost", 80);
PrintWriter writer
= new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
BufferedReader reader
= new BufferedReader(new InputStreamReader(socket.getInputStream()));
) {
socket.setSoTimeout(60000);
String request = "GET/HTTP/1.1\r\n" +
"Host: localhost\r\n" +
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n" +
"Accept-Language: en-US,en;q=0.5\r\n";
writer.write(request);
writer.flush();
String line;
System.out.println("Response: ");
while((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
System.err.println(e.getMessage());
}
}
출력된다 : 여기 내 코드는
Response:
Read timed out
BUILD SUCCESSFUL (total time: 1 minute 0 seconds)
참고 : 가 나는이 목적을 위해 등 url
클래스처럼 자바에 더 추상화 된 클래스를 사용할 수 있습니다 알고 있습니다. 내가 말했듯이 나는 소켓에 대해 공부하고있다.
@Erwin에게 감사드립니다. 그러나 캐리지 리턴 라인 피드 시퀀스도 시도했지만 아무 것도 변경되지 않았습니다. 요청을 보내고 응답을 읽는 방식에 문제가있을 수 있다고 생각합니다. –
문제는 정확히 @Erwin이 말했습니다. 여기에 명시된 요청 헤더의 끝에 빈 줄을 실제로 시도해 보셨습니까? – EJP
감사합니다. @EJP와 Erwin 나는 그것을 잊어 버렸습니다. –