Я создал сервер, использующий сокеты на Java, и он готов принимать HTTP-запросы и отправлять HTTP-ответ.
Сервер находится на порту моего ПК, но я хочу слушать только «конечную точку», я имею в виду, я хочу смонтировать сервер, то есть на localhost:60802/json.
Это возможно? Мой код здесь:
PORT = Integer.parseInt(portSelection.getText());
th = new Thread(new Runnable() {
//String file;
@Override
public void run() {
try{
server = new ServerSocket(PORT);
while(open) {
//Accept connections
connection = server.accept();
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
try {
String line = "";
while ((line=in.readLine())!= null && !line.equals("")){log.append(line);}
in.close();
}catch (Exception e1) {
}
}
}catch (EOFException e1 ) {
e1.printStackTrace();
}catch (BindException e1) {
log.setText("Error. Port "+PORT+" already in use.");
open=false;
}catch (SocketException e1) {
}catch (IOException e1) {
e1.printStackTrace();
}
}
});
th.start();
Я пропустил некоторые части, поэтому, возможно, вы обнаружите ошибку, но в настоящее время код работает идеально.




Сервер привязан к определенному TCP-порту (и интерфейсу, если он предусмотрен). Если вы хотите дать ответ только по пути / json, просто сделайте условный оператор, проверяющий URL.
Если вы используете весеннюю загрузку для монтирования вашего сервера и веб-сервиса, это будет намного проще, чем все перекодировать.
Пожалуйста, посмотрите: Создание веб-службы RESTful с помощью Spring Boot Actuator
Затем вы можете разработать приложение для каждой группы веб-сервисов, и для каждой группы веб-сервисов вы можете указать конкретный порт в файле application.properties:
server.port= 60802
I want to mount the server i.e. on localhost:60802/json. Is this possible?
Вы можете прослушивать порт 60802 localhost. Он будет принимать все соединения на этом IP / порту. Помимо этого, ваш серверный код должен:
(В качестве альтернативы вы можете поместить свой серверный код за обратным прокси-сервером, который работает с этим материалом и также перезаписывает URL-адрес запроса. Но это может помешать вашей цели при использовании сокетов ....)
Но, честно говоря, писать HTTP-сервер с использованием сокетов - плохая идея. Много работы, и вы, скорее всего, получите сервис, который не реализует спецификации HTTP правильно. Лучше использовать существующий веб-сервер / контейнер (например, Tomcat, Jetty, Glassfish, SpringBoot и т. д.) Или библиотеку Apache HttpComponents.
Спасибо за ваш совет!