JAVA单排日记-2020/1/31-网络编程_模拟BS服务器

服务器代码:

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

public class DemoSeever {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8180);
        Socket client = server.accept();
        
        InputStream in = client.getInputStream();

        int len = 0;
        byte[] bytes = new byte[1024];
        while ((len = in.read(bytes))!=-1){
            System.out.println(new String(bytes,0,len));
        }
    }
}

浏览器访问:

在这里插入图片描述

服务器读取客户端请求

在这里插入图片描述
在这里插入图片描述

服务器根据浏览器请求的文件的路径,将文件输出给浏览器

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

public class DemoSeever {
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(8180);
        while (true) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        Socket client = server.accept();
                        InputStream in = client.getInputStream();
     				   /*int len = 0;
       					byte[] bytes = new byte[1024];
        				while ((len = in.read(bytes))!=-1){
            			System.out.println(new String(bytes,0,len));
        				}*/

						//将字节流转换为字符流,调用readline方法读取第一行地址
                        BufferedReader buffer = new BufferedReader(new InputStreamReader(in));
                        String str = buffer.readLine();
                        
                        //以空格为分节符,截取第一行中间地址部分
                        String[] strs = str.split(" ");
                        //将中间地址部分最前面的/去掉
                        String str1 = strs[1].substring(1);

                        //根据获取到的路径,将html文件发出
                        FileInputStream file = new FileInputStream(str1);
                        OutputStream out = client.getOutputStream();

                        //固定的三行,之后课程会介绍
                        out.write("HTTP/1.1 200 OK\r\n".getBytes());
                        out.write("Content‐Type:text/html\r\n".getBytes());
                        out.write("\r\n".getBytes());
						
						//一读一写,将文件传送给浏览器
                        int len1 = 0;
                        byte[] bytes1 = new byte[1024];
                        while ((len1 = file.read(bytes1)) != -1) {
                            out.write(bytes1, 0, len1);
                        }
						//记得关闭文件字节流和客户端
                        file.close();
                        client.close();
                    } catch (IOException e) {
                        e.toString();
                    }
                }
            }).start();
        }
        //server.close();
    }
}

在这里插入图片描述

发布了131 篇原创文章 · 获赞 1 · 访问量 4454

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104128039