Я написал класс сервера, мой клиент - мой браузер. Когда я ввожу localhost:8082
в свой браузер, открывается жесткий код www.mmix.cs.hm.edu
. Все идет нормально. Обычно сайт имеет более одной страницы. Мой сервер может только восстановить домашнюю страницу www.mmix.cs.hm.edu/index.html
, независимо от того, нажимаю ли я на другие ссылки. Я хотел бы иметь возможность перемещаться по этим другим страницам. Может ли кто-нибудь взглянуть на мой код и дать мне подсказку о том, как я могу продолжить?Клиент-серверное приложение Java
public static void main(String args[]) {
String fromClient = "www.mmix.cs.hm.edu";
try(ServerSocket welcomeSocket = new ServerSocket(8082)){
System.out.println("Server started, waiting for clients...");
while(true){
StringBuilder htmlCode = new StringBuilder();
try(Socket connectionSocket = welcomeSocket.accept();
DataOutputStream toClient = new DataOutputStream(connectionSocket.getOutputStream());
BufferedReader fromBrowser = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()))){
try(InputStream url = new URL("http://"+fromClient+"/index.html").openStream();
BufferedReader getUrl = new BufferedReader(new InputStreamReader(url))){
for(String line = getUrl.readLine(); line != null; line = getUrl.readLine()){
htmlCode.append(line);
}
String str = htmlCode.toString();
toClient.writeBytes(str);
//toClient.write("\r\n");
}
}
}
}
catch(IOException io){
io.printStackTrace();
}
}
Рассмотрите возможность использования 'Socket' вместо' URL', чтобы напрямую передавать данные из клиентского соединения с сервером. 'new Socket (« www.mmix.cs.hm.edu », 80)'. Было бы намного проще и намного чище. –