Проблема в методе readLine () на вашем сервере, в методе readInputStream ().Он не читает после символа новой строки (\n
) в вашей строке после «HTTP / 1.1 \ n».
Здесь я изменил ваш код для метода readInputStream()
.Я использую метод read()
, и я также изменил индексы подстроки.До этого ваш код пытался отобразить подстроку в start index: 21
и end index: 8
, потому что вы вычитали конечный индекс из длины строки.Модифицированный метод:
public void readInputStream() throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder sb = new StringBuilder();
int i;
// read the inputStream character by character
while ((i = in.read()) != -1) {
char ch = (char)i;
String str = Character.toString(ch);
sb.append(str);
str = sb.toString();
if(str.contains(".html")) {
// modified substring indices
fileName = str.substring(str.indexOf("File:") + 6, str.lastIndexOf("html") + 4);
System.out.println("\n"+fileName);
break;
}
}
}
Выход на стороне SERVER выглядит так:
Waiting for a client connection...
Client has connected successfully
Entered the readInputStream() method.
site.html
Waiting for a client connection...
Выход на стороне CLIENT выглядит так:
Enter IP and port:
127.0.0.1
8080
Enter name of the file
site.html
GET / HTTP/1.1
File: site.html:
<html><h2>404:file not found</h2></html>
Process finished with exit code 0
Путь к файлу должен работать в вашей системе, если он создан в правильном месте.
Вы также можете взглянуть на этот ответ здесь , который предлагает использовать read () вместо этого, чтобы читать вашу строку символ за символом.