private ServerSocket serverSocket; public BirdBootApplication(){ try { System.out.println("正在启动服务端..."); serverSocket = new ServerSocket(8088); System.out.println("服务端启动完毕!"); } catch (IOException e) { e.printStackTrace(); } } public void start() { try { while (true) { System.out.println("等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("一个客户端连接了"); //启动线程来处理该客户端交互 ClientHandler handler = new ClientHandler(socket); //1:这里要传参 2:如果编译报错说明ClientHandler没有实现Runnable接口 Thread t = new Thread(handler); t.start(); } } catch(IOException e){ e.printStackTrace(); } } public static void main(String[] args) { BirdBootApplication application = new BirdBootApplication(); application.start(); } } 怎么添加404页面
时间: 2024-01-23 07:01:47 浏览: 57
要添加 404 页面,可以在 static 目录下创建一个名为 404.html 的文件,然后在 ClientHandler 类中修改如下代码:
```
if (file.isFile()) {
statusCode = 200;
statusReason = "OK";
} else {
statusCode = 404;
statusReason = "Not Found";
file = new File(staticDir, "404.html"); // 使用 404.html 文件作为响应内容
}
```
这样,当请求的文件不存在时,就会返回 404 状态码和 404.html 文件的内容。注意,404.html 文件必须存在于 static 目录下,否则会抛出 FileNotFoundException。
相关问题
ServerSocket serverSocket = new ServerSocket(10086); System.out.println("准备接受信号"); Socket accept = serverSocket.accept(); System.out.println("接收到"+accept.getRemoteSocketAddress()+"的信号"); InputStream inputStream = accept.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); byte []brr=new byte[1024*8]; int read; File file = new File("net-app\\src\\com\\itheima\\d10brother\\ly.mp4"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file)); while ((read=bufferedInputStream.read())!=-1){ System.out.println(read); bufferedOutputStream.write(brr,0,read); } System.out.println("复制完成");
这段代码是一个简单的网络文件传输的服务端代码。该代码通过创建一个ServerSocket对象来监听指定端口(10086),等待客户端的连接。一旦有客户端连接成功,就会通过accept()方法得到一个Socket对象,然后从Socket对象中获取InputStream,再通过BufferedInputStream包装一下,就可以读取客户端发送过来的数据了,这里是一个mp4文件的二进制流。然后再将读取到的二进制流写入到指定的文件中,最后输出“复制完成”表示文件传输完成。需要注意的是,这个代码只能传输小文件,如果传输的文件较大,则需要采用分段传输的方式,否则会发生内存溢出。
public static void main(String[] args) throws IOException, InterruptedException { ServerSocket serverSocket = new ServerSocket(10086); System.out.println("准备接受信号"); Socket accept = serverSocket.accept(); System.out.println("接收到"+accept.getRemoteSocketAddress()+"的信号"); InputStream inputStream = accept.getInputStream(); BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream); byte []brr=new byte[1024*1088]; int read; int sum=0; File file = new File("net-app\\src\\com\\itheima\\d10brother\\ly.mp4"); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file)); while ((read=bufferedInputStream.read())!=-1){ System.out.println(Thread.currentThread().getName()+"正在读取中"); Thread.sleep(500); sum+=read; System.out.println(Thread.currentThread().getName()+"已经读取到"+sum+"字节"); bufferedOutputStream.write(brr,0,read); System.out.println(Thread.currentThread().getName()+"正在通过socket发送中,已发送"+sum+"字节"); } bufferedInputStream.close(); bufferedOutputStream.close(); System.out.println("复制完成"); }
这段代码是一个Java程序,作用是从一个Socket连接中读取数据,并将读取的数据写入到一个本地文件中。具体流程如下:
1. 创建一个ServerSocket对象,指定端口号为10086,用于监听客户端的连接请求。
2. 调用ServerSocket的accept()方法,等待客户端连接,一旦接收到连接请求,就返回一个Socket对象,用于和客户端进行通信。
3. 获取Socket对象的输入流,使用BufferedInputStream进行包装,方便读取数据。
4. 创建一个byte数组,用于缓存读取的数据。
5. 创建一个File对象,指定本地文件路径,用于存储读取的数据。
6. 创建一个BufferedOutputStream对象,用于将读取的数据写入到本地文件中。
7. 使用while循环从输入流中读取数据,每次读取一定数量的数据,并将读取的数据写入到本地文件中。
8. 循环结束后,关闭输入流和输出流,输出复制完成的消息。
需要注意的是,在while循环中,读取数据的操作使用的是read()方法,这个方法每次只会读取一个字节,因此在写入数据的时候,需要将读取的字节数组的长度作为第三个参数传递给write()方法。同时,为了模拟复制文件的过程,代码中使用了Thread.sleep()方法来让程序暂停一段时间。
阅读全文