Java Web服务器拒绝连接



我尝试制作一个简单的java类,该类在localhost上运行服务器,只制作一个页面,其中单词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 = "rn"; // 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) {

}
}
}

在我的主方法中,我在端口276上启动一个新的ServerListenerThread。

您需要保持线程的活力。你可以用while。下面是我做的基本修改。你可以重构更多。同时只创建一次ServerSocket。

公共类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 = "rn"; // 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) {
}
}
}

}