zoukankan      html  css  js  c++  java
  • 编写自己的简单服务器

    这里记录一个类似tomcat的简单服务器的编写过程,帮助了解使用到的主要技术及原理

    这里主要使用到socket网络编程以及线程等技术,关于io的技术也需要熟练掌握

    思路讲解:

    主要思路就是,每当有请求时,就会创建一个线程并使用socket进行监听,然后使用socket进行读取,及写入操作

    代码实现:

    package com.vincent.server;
    
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class MyServer { 
    
        private ServerSocket serverSocket;
        private int port;
        private boolean shutdown;
        
        public MyServer(int port) {
            super();
            this.port=port;
        }
        
        //启动服务程序
        public void startup(){
            try {
                serverSocket=new ServerSocket(port);
                while(!shutdown){
                    Socket socket=serverSocket.accept();
                    System.out.println("一个请求来了");
                    
                    new Thread(new DispatcherRequest(socket)).start(); 
                }
                
            } catch (IOException e) {
                
            }
        }
        
        public static void main(String[] args) {
            
            new MyServer(8888).startup();
            
        }
        
        
        
    }
    package com.vincent.server;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.net.Socket;
    
    public class DispatcherRequest implements Runnable {
    
        private Socket socket;
        
        public DispatcherRequest(Socket socket) {
            this.socket=socket;
        }
        
        @Override
        public void run() {
            
            InputStream is=null;
            OutputStream os=null;
            
            try {
                is=socket.getInputStream();
                os=socket.getOutputStream();
                
                byte[] b=new byte[1024];
                is.read(b);
                System.out.println("客户端内容:"+new String(b));        
                
                String str="<html><head></head><body><h1>hello</h1></body></html>";
                os.write(str.getBytes());
                
            } catch (IOException e) {
                
            }finally{
                try {
                    is.close();
                    os.close();
                } catch (IOException e) {
                    
                }
            }
            
        }
        
        
    }

    注意,这里的输出是在控制台里显示的,,

  • 相关阅读:
    第31-35课
    Cisco学习笔记
    ScreenOS地址转换
    Bootstrap3组件--2
    Bootstrap3组件--1
    Bootstrap3全局CSS样式
    MySQL数据库中字段含逗号的数据,分隔成多条数据
    EF Core 关联数据
    ABP 创建 webapi
    Abp ajax The required antiforgery request token was not provided in either form field
  • 原文地址:https://www.cnblogs.com/Vincent-yuan/p/10753423.html
Copyright © 2011-2022 走看看