欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java 使用浏览器访问TCP服务端

程序员文章站 2022-07-03 17:27:25
...

(1)原理 

Java 使用浏览器访问TCP服务端

(2)实现

public class uploadBSTCPServer {
    public static void main(String[] args) throws IOException {
        //创建服务器监听端口的ServerSocket
        ServerSocket ss = new ServerSocket(8080);
        while(true){
            //判断客户端是否发送连接请求,与客户端建立连接,并获取Socket流
            Socket socket = ss.accept();
            //利用多线程实现服务器端并发处理客户端请求
            new Thread(()->{
                try {
                    InputStream is = socket.getInputStream();//获取socket中的网络输入流,与客户端socket相对应
                    BufferedReader br = new BufferedReader(new InputStreamReader(is));//将网络字节输入流转换为字符缓冲输入流

                    String s = br.readLine();//将客户端请求信息的第一行读取出来,GET /请求的html的地址 HTTP/1.1
                    String s1 = s.split(" ")[1];//获取html的地址
                    String path = s1.substring(1);//去除html地址中第一个【/】

                    OutputStream os = socket.getOutputStream();//向客户端回复消息
                    os.write("HTTP/1.1 200 OK\r\n".getBytes());
                    os.write("Content-Type:text/html\r\n".getBytes());
                    os.write("\r\n".getBytes());

                    FileInputStream fis = new FileInputStream(path);//绑定请求的html文件
                    byte[] bytes = new byte[1024];
                    int len = 0;
                    while((len=fis.read(bytes))!=-1){//读取请求的html文件
                       os.write(bytes,0,len);//将获取的html文件返回到客户端
                    }
                    fis.close();
                    socket.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }
}