0
我正在學習java中的套接字。我創建了一個簡單的tcp客戶端,旨在發送HTTP請求並接收響應。但是在運行客戶端之後,它只是等待而沒有響應。這裏是我的代碼:無法從套接字連接獲得響應
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)
注: 我知道我可以在Java中使用更抽象類,如url
類等用於這一目的。正如我所說我正在研究套接字。
感謝@Erwin您的迴應,但我也試過回車換行順序,沒有任何改變。我認爲我發送請求和閱讀響應的方式可能存在問題。 –
問題正是@Erwin所說的。您是否真的在請求標題末尾嘗試了空白行? – EJP
謝謝@EJP和歐文我忘了那個 –