zoukankan      html  css  js  c++  java
  • 简单的java http服务器

    package testreadline;
    import java.net.*;
    import java.nio.ByteBuffer;
    import java.nio.channels.*;
    import java.nio.charset.*;
    import java.util.concurrent.*;
    import java.io.*;
    public class test {
    
     public static void main(String[] args) throws IOException {
      new SimpleHttpServer().service();
      
     }
    }
     class SimpleHttpServer {
     private int port = 80;
     private ServerSocketChannel serverSocketChannel = null;
     private ExecutorService executorService;
     private static final int POOL_MULTIPLE = 4;
    
     public SimpleHttpServer() throws IOException 
     {
      executorService = Executors.newFixedThreadPool(Runtime.getRuntime()
        .availableProcessors() * POOL_MULTIPLE);
      serverSocketChannel = ServerSocketChannel.open();
      serverSocketChannel.socket().setReuseAddress(true);
      serverSocketChannel.socket().bind(new InetSocketAddress(port));
     }
    
     public void service() {
      while (true) {
       SocketChannel socketChannel = null;
       try {
        socketChannel = serverSocketChannel.accept();
        executorService.execute(new Handler(socketChannel));
       } catch (IOException e) {
        e.printStackTrace();
       }
      }
     }
    
    
    }
    
    class Handler implements Runnable {
     private SocketChannel socketChannel;
     public Handler(SocketChannel socketChannel) {
      this.socketChannel = socketChannel;
     }
    
     @Override
     public void run() {
      handle(socketChannel);
     }
    
     private void handle(SocketChannel socketChannel) {
      try {
       Socket socket = socketChannel.socket();  
       System.out.println(socket.getInetAddress() + ":" + socket.getPort());
          String info = "HTTP/1.1 200 OK
    " +
                           "Server: Apache-Coyote/1.1
    " +
                           "Content-Type: text/html;charset=utf-8
    " +
                           "Content-Length: 1021
    " +
                           "Date: Wed, 09 Dec 2009 05:00:27 GMT
    " +
                           "
    ";                
                   OutputStream os = socket.getOutputStream();
                   os.write(info.getBytes("utf-8"));
                   os.flush();
                   String html="<H1>港港都是泪,还是早停困!</H1>";
                   os.write(html.getBytes("utf-8"));
                   os.flush();
      
      
      
      } catch (IOException e) {
       e.printStackTrace();
      } finally {
       try {
        if (socketChannel != null)
         socketChannel.close();
       } catch (IOException e) {
        e.printStackTrace();
       }
      }
     }
    
     private Charset charset = Charset.forName("GBK");
    
     private ByteBuffer encode(String string) {
      return ByteBuffer.allocate(string.length() * 2).get(
        string.getBytes(charset));
     }
    
     private String decode(ByteBuffer buffer) {
      byte[] source = new byte[buffer.position() + 1];
      buffer.put(source);
      return new String(source, charset);
     }
    }
    
  • 相关阅读:
    使用PHP绘制统计图
    微信公众平台商户模块
    jQuery Mobile入门教程
    2013中国微信公众平台用户研究报告
    WordPress的SEO技术
    微信公众平台消息接口星标功能
    微信5.0打飞机怎么取得高分?
    微信公众平台的服务号和订阅号
    微信公众平台开发(58)自定义菜单
    微信公众平台开发(57)Emoji表情符号
  • 原文地址:https://www.cnblogs.com/egai/p/3599527.html
Copyright © 2011-2022 走看看