zoukankan      html  css  js  c++  java
  • tiny java web server

    import java.io.*;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.ArrayList;
    
    /**
     * Created by Administrator on 2016/7/29.
     */
    
    public class HttpDemo extends Thread
    {
        private ServerSocket serverSocket;
        private int port = 80;
    
        public void run()
        {
            String[] MIME_TYPES = {
                "text/html",
                "image/jpeg",
                "image/png",
                "image/gif",
                "application/javascript",
                "text/css",
            };
            try {
                serverSocket = new ServerSocket(port);
                while(true) {
                    Socket connectedClient = serverSocket.accept();
                    DataInputStream inStream = new DataInputStream(connectedClient.getInputStream());
                    BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inStream));
                    String str = bufferedReader.readLine();
                    ArrayList<String> headers = new ArrayList();
                    String encoding = "ISO-8859-1";
                    while(str != null) {
                        System.out.println(str);
                        headers.add(str);
                        if (str.isEmpty()) {
                            //analysis headers and response http request
                            String firstLine = headers.get(0);
                            String parts[] = firstLine.split(" ");
                            String responseHeader;
                            String responseBody;
                            String file;
                            responseHeader = "HTTP/1.1 200 OK
    ";
                            DataOutputStream out = new DataOutputStream(connectedClient.getOutputStream());
                            if (parts[1].equals("/")) {
                                file = "./index.html";
                            }  else {
                                file = "." + parts[1];
                            }
    
                            String mimeType;
                            if (file.endsWith(".html")) {
                                mimeType = MIME_TYPES[0];
                            } else if(file.endsWith(".jpg")) {
                                mimeType = MIME_TYPES[1];
                            } else if(file.endsWith(".png")) {
                                mimeType = MIME_TYPES[2];
                            } else if(file.endsWith(".gif")) {
                                mimeType = MIME_TYPES[3];
                            } else if(file.endsWith(".css")) {
                                mimeType = MIME_TYPES[5];
                            } else if(file.endsWith(".js")) {
                                mimeType = MIME_TYPES[4];
                            } else {
                                mimeType = MIME_TYPES[0];
                            }
    
                            try {
                                File fl = new File(file);
                                Long len = fl.length();
                                responseHeader += "Content-Length:" + len + "
    ";
                                responseHeader += "Content-Type:" + mimeType;
                                byte[] buf = new byte[len.intValue()];
                                FileInputStream flin = new FileInputStream(file);
                                flin.read(buf, 0, len.intValue());
                                responseBody = new String(buf, encoding);
                            } catch(Exception e) {
                                connectedClient.close();
                                break;
                            }
    
                            out.writeBytes(responseHeader + "
    
    " + responseBody);
                            connectedClient.close();
                            break;
                        }
                        str = bufferedReader.readLine();
                    }
                }
            } catch(Exception e) {
                //do nothing
            }
        }
    }
    相信世界是平的
    谨记四个字“修身养性”
    大江东去浪淘尽英雄,再牛B的人物最后也是一掊土
    向善不是目的,而是抚慰心灵,更多的感受幸福,感谢别人给你行善的机会
    相信老子的话:万物生于有,有生于无,一切的道理都源于一个无法证明的假设
    我是好是坏就自然而然的摆在那里,并不会因为别人的评价而改变什么,我也不需要别人用一张纸来说明我什么,世间最难得的是自由



    支持大额赞助:
  • 相关阅读:
    stringstream用法
    来到上海了
    [转]强悍!情书居然能写得如此专业
    asp.net控件开发基础(23)
    当你遇到internal的时候
    asp.net控件设计时支持(3)
    asp.net控件设计时支持(5)
    CS中的缓存类,保证都看的懂
    快要毕业了
    asp.net控件设计时支持(4)
  • 原文地址:https://www.cnblogs.com/sky-view/p/5718079.html
Copyright © 2011-2022 走看看