Java WebServer отказывается подключаться - PullRequest
0 голосов
/ 12 апреля 2020

Я попытался создать простой класс java, который запускает сервер на локальном хосте и просто создает страницу со словом test в качестве заголовка HTML и словом test в теле. По какой-то причине, когда я запускаю его и пытаюсь подключиться, он отказывается подключаться. Вот мой код:

package Server.core;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerListenerThread extends Thread{

    private int port;
    private ServerSocket serverSocket;
    public ServerListenerThread(int port) throws IOException {
        this.port = port;
        this.serverSocket = new ServerSocket(port);
    }


    @Override
    public void run() {
        try {
            ServerSocket serverSocket = new ServerSocket(port);
            Socket socket = serverSocket.accept();
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();


            String html = "<html><head><title>Test</title></head><body><h1>test</h1></body></html>"; 
            final String CRLF = "\r\n"; // 13, 10
            String response = "HTTP/1.1 200 OK" + CRLF + "Content-Length: " + html.getBytes().length + CRLF + CRLF + html+ CRLF + CRLF;

            outputStream.write(response.getBytes());


            inputStream.close();
            outputStream.close();
            socket.close();
            serverSocket.close();
        } catch(Exception e) {


        }
    }

}

В моем основном методе я запускаю новый ServerListenerThread на порт 276.

1 Ответ

0 голосов
/ 12 апреля 2020

Вы должны поддерживать свою нить. Вы можете использовать время для этого. ниже - базовая c модификация, которую я сделал. Вы можете рефакторинг больше. Также создайте ServerSocket только один раз.

publi c класс ServerListenerThread расширяет поток {

public static void main(String args[]) throws IOException {
    ServerListenerThread s1= new ServerListenerThread(276);
    s1.start();
}


private int port;
private ServerSocket serverSocket;
public ServerListenerThread(int port) throws IOException {
    this.port = port;
    this.serverSocket = new ServerSocket(port);
}


@Override
public void run() {
    while (true) {
        // spin forever

        try {
           // ServerSocket serverSocket = new ServerSocket(port);
            Socket socket = serverSocket.accept();
            InputStream inputStream = socket.getInputStream();
            OutputStream outputStream = socket.getOutputStream();

            String html = "<html><head><title>Test</title></head><body><h1>test</h1></body></html>";
            final String CRLF = "\r\n"; // 13, 10
            String response =
                    "HTTP/1.1 200 OK" + CRLF + "Content-Length: " + html.getBytes().length + CRLF + CRLF + html
                            + CRLF + CRLF;

            outputStream.write(response.getBytes());

            inputStream.close();
            outputStream.close();
            socket.close();
            serverSocket.close();
        } catch (Exception e) {

        }
    }
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...