自己实现一个简单的支持并发的Web服务器

前面我们自己实现了一个线程池,现在我们基于前面编写的线程池(http://blog.csdn.net/canot/article/details/50904001)编写一个支持并发访问的Web服务器来处理一些简单的HTTP请求/响应。

public class SimpleHttpServer {
   
    //定义处理HttpRequest的线程池 
    static ThreadPool<HttpRequestHandler> threadPool = new DefaultThreadPool<HttpRequestHandler>();
    static ServerSocket serverSocket;
    //该Web服务器的路径
    static String basePath;
    //默认的端口号
    static int port = 8080;
  //启动服务器
    public static void start() throws IOException {
        serverSocket = new ServerSocket(port);
        Socket client = null;
        //获取客户端的连接
        while ((client = serverSocket.accept()) != null) {
            //生成一个job放入线程池执行
            threadPool.execute(new HttpRequestHandler(client));
        }
        serverSocket.close();
    }

    static 
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
设计和实现一个简单Web服务器,需要考虑以下几个方面: 1. 网络通信:Web服务器需要监听网络端口,接收客户端的连接请求,并且能够读取和发送HTTP请求和响应数据。 2. 多线程或多进程:Web服务器需要支持并发请求处理,可以采用多线程或多进程的方式来实现。 3. HTTP协议解析:Web服务器需要能够解析HTTP请求,包括请求方式、请求头、请求体等,并且能够根据请求内容返回相应的HTTP响应。 4. 路由和控制器:Web服务器需要能够根据请求的URL路由到对应的处理函数,并且能够根据请求参数来调用相应的控制器处理业务逻辑。 5. 静态文件服务:Web服务器需要能够提供静态文件服务,即能够读取并返回指定路径下的静态文件内容。 下面是一个简单Web服务器的设计和实现思路: 1. 网络通信:使用socket库来实现网络通信,监听指定的端口号,接收客户端连接请求,并且能够读取和发送HTTP请求和响应数据。 2. 多线程或多进程:使用多线程来实现并发请求处理,每个线程负责处理一个客户端连接。 3. HTTP协议解析:使用正则表达式来解析HTTP请求,解析出请求方式、请求头、请求体等信息,根据请求内容来生成HTTP响应。 4. 路由和控制器:使用字典来维护路由和处理函数之间的映射关系,根据请求的URL路由到对应的处理函数,并且能够根据请求参数来调用相应的控制器处理业务逻辑。 5. 静态文件服务:使用os库来读取指定路径下的静态文件内容,并且能够以HTTP响应的形式返回客户端。 最终实现一个简单Web服务器,可以参考以下代码:https://github.com/luoyan35714/SimpleWebServer

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值