引自强大而免费的微信小程序:皆我百晓生。如有帮助,还望采纳。
这个问题可能是因为在浏览器中直接输入地址和端口时,默认使用的是HTTP协议进行连接,而你的代码中只是简单的发送了一个字符串,并没有按照HTTP协议的格式进行返回响应。
要解决这个问题,你可以修改你的代码,按照HTTP协议的格式返回一个响应。示例如下:
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Main {
//自制简单的Web服务器
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9998);
while (!serverSocket.isClosed()) {
System.out.println("=====端口服务端已建立,正在等待连接=====");
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String request = reader.readLine();
System.out.println("收到请求:" + request);
OutputStream outputStream = socket.getOutputStream();
// 根据请求的路径判断返回的内容
if (request.startsWith("GET")) {
String response = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\nhello i am tomcat";
outputStream.write(response.getBytes());
} else {
String response = "HTTP/1.1 404 Not Found\r\nContent-Type: text/html\r\n\r\n404 Not Found";
outputStream.write(response.getBytes());
}
outputStream.close();
reader.close();
socket.close();
}
serverSocket.close();
}
}
在上面的代码中,首先通过BufferedReader读取了浏览器发送的请求,然后根据请求的内容判断返回的内容。如果请求以"GET"开头,则返回一个200 OK的响应,内容为"hello i am tomcat";否则返回一个404 Not Found的响应,内容为"404 Not Found"。