Java HTTP Server работает только на локальном компьютере. Недоступно для других машин, подключенных к той же сети - PullRequest
0 голосов
/ 06 июля 2019

Я выполняю этот сценарий на компьютере A. И я могу получить доступ к этому серверу с той же машины, что и машина A. Но не могу получить доступ / не получил никакого ответа с машиной B, которая подключена к той же сети.Я упомянул мой код ниже,

    public class BasicHttpServerExample2 {
      public static void main(String[] args) throws IOException {
          int port = 88;
          InetSocketAddress socket = new InetSocketAddress("192.168.0.37", port);
          HttpServer server = HttpServer.create();
          server.bind(socket, port);
          System.out.println("server started at " + port);
          HttpContext rootContext = server.createContext("/");
          HttpContext context = server.createContext("/print");
          rootContext.setHandler(BasicHttpServerExample2::RootHandler);
          context.setHandler(BasicHttpServerExample2::handleRequest);
          server.start();
      }
      public static void RootHandler(HttpExchange he) throws IOException {
                  String response = "<h1>Server start success if you see this message</h1>" + "<h1>Port: " + "88" + "</h1>";
                  he.sendResponseHeaders(200, response.length());
                  OutputStream os = he.getResponseBody();
                  os.write(response.getBytes());
                  os.close();
          }

      private static void handleRequest(HttpExchange exchange) throws IOException {
          /** handler resoponse **/
          URI requestURI = exchange.getRequestURI();
          printRequestInfo(exchange);
          /** handler resoponse **/
          String response = "Data Received";
          exchange.getResponseHeaders().add("Access-Control-Allow-Origin", "*");
          /** handler resoponse **/
          exchange.sendResponseHeaders(200, response.getBytes().length);
          /** handler resoponse **/
          OutputStream os = exchange.getResponseBody();
          /** handler resoponse **/
          os.write(response.getBytes());
          /** handler resoponse **/
          os.close();
      }

      private static void printRequestInfo(HttpExchange exchange) {
          /** Console ***/
          System.out.println("-- headers --");
          Headers requestHeaders = exchange.getRequestHeaders();
          requestHeaders.entrySet().forEach(System.out::println);
        /** Console ***/
          System.out.println("-- principle --");
          HttpPrincipal principal = exchange.getPrincipal();
          System.out.println(principal);
/** Console ***/
          System.out.println("-- HTTP method --");
          String requestMethod = exchange.getRequestMethod();
          System.out.println(requestMethod);
/** Console ***/
          System.out.println("-- query --");
          URI requestURI = exchange.getRequestURI();
          String query = requestURI.getQuery();
          SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");  
          Date date = new Date(System.currentTimeMillis());  
          System.out.println(query + " received at " + formatter.format(date));
      }

    }
...