經(jīng)驗(yàn)不在于年限,在于積累---專注互聯(lián)網(wǎng)軟件開發(fā)

          把工作當(dāng)事業(yè)做,把項(xiàng)目當(dāng)作品做!

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            55 Posts :: 0 Stories :: 66 Comments :: 0 Trackbacks
              本文實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的多線程HTTP服務(wù)器。接收HTTP GET請(qǐng)求,然后返回簡(jiǎn)單的文本信息。
              后期會(huì)豐富這個(gè)服務(wù)器,實(shí)現(xiàn)更多的功能,例如:
          1. 支持POST方式提交
          2. 支持二進(jìn)制的流傳送
          3. 支持線程池處理
          4. 采用NIO非阻塞形式實(shí)現(xiàn)
           1package thread;
           2
           3import java.io.BufferedReader;
           4import java.io.IOException;
           5import java.io.InputStream;
           6import java.io.InputStreamReader;
           7import java.io.OutputStream;
           8import java.io.PrintWriter;
           9import java.net.ServerSocket;
          10import java.net.Socket;
          11
          12/**
          13 *  Copyright (C): 2009
          14 *  @author 陳新漢
          15 *  Jun 27, 2009 2:39:39 PM
          16 */

          17
          18/**
          19 * Threaded Network Server
          20 * 這是一個(gè)簡(jiǎn)單的多線程HTTP服務(wù)器
          21 * 采用多線程來(lái)處理高并發(fā)的用戶請(qǐng)求
          22 */

          23public class HttpServer {
          24    public static void main(String [] args){
          25        HttpServer hs=new HttpServer();
          26        int i=1, port=8888;
          27        Socket received=null;
          28        try{
          29            ServerSocket server=new ServerSocket(port);
          30            while(true){
          31                received=server.accept();
          32                if(received!=null){
          33                    hs.new ProcessThread(i++,received).start();
          34                }

          35            }

          36        }
          catch(IOException e){
          37            e.printStackTrace();
          38        }

          39    }

          40    
          41    class ProcessThread extends Thread
          42    {
          43        private int thread_number=0;
          44        private Socket received=null;
          45        
          46        public ProcessThread(int thread_number, Socket received) {
          47            super();
          48            this.thread_number = thread_number;
          49            this.received = received;
          50        }

          51
          52        public void run() {
          53            System.out.println(""+thread_number+"個(gè)處理線程啟動(dòng)了……");
          54            if(received!=null){
          55                try{
          56                    System.out.println("連接用戶的地址:"+received.getInetAddress().getHostAddress());
          57                    InputStream in=received.getInputStream();
          58                    BufferedReader d= new BufferedReader(new InputStreamReader(in));
          59                    String result=d.readLine();
          60                    while(result!=null && !result.equals("")){
          61                        System.out.println(result);
          62                        result=d.readLine();
          63                    }

          64                    OutputStream out=received.getOutputStream();
          65                    PrintWriter outstream=new PrintWriter(out,true);
          66                    String msg1="<html><head><title></title></head><body><h1>收到!</h1></body></html>";
          67                    outstream.println("HTTP/1.0 200 OK");//返回應(yīng)答消息,并結(jié)束應(yīng)答
          68                    outstream.println("Content-Type:text/html;charset=GBK");
          69                    outstream.println();// 根據(jù) HTTP 協(xié)議, 空行將結(jié)束頭信息
          70                    outstream.println(msg1);
          71                    outstream.flush();
          72                    outstream.close();
          73                }
          catch(IOException e){
          74                    e.printStackTrace();
          75                }
          finally{
          76                    try{
          77                        received.close();
          78                    }
          catch(IOException e){
          79                        e.printStackTrace();
          80                    }

          81                }

          82            }

          83        }

          84    }

          85}

          86

              運(yùn)行這個(gè)程序啟動(dòng)服務(wù)器,然后在瀏覽器地址欄輸入:http://localhost:8888/,即可看到返回結(jié)果。

              友情提醒:本博文章歡迎轉(zhuǎn)載,但請(qǐng)注明出處:陳新漢
          posted on 2009-09-15 12:36 hankchen 閱讀(1134) 評(píng)論(0)  編輯  收藏 所屬分類: 網(wǎng)絡(luò)開發(fā)+Mina+Netty
          主站蜘蛛池模板: 长宁县| 胶南市| 汾西县| 盖州市| 含山县| 景德镇市| 乌拉特中旗| 平陆县| 来凤县| 桃园市| 河北省| 会昌县| 武鸣县| 天全县| 祁连县| 大方县| 巴青县| 乌兰浩特市| 凤城市| 通河县| 都兰县| 荣昌县| 铁力市| 容城县| 汕头市| 灯塔市| 古浪县| 荥阳市| 专栏| 汉川市| 佛教| 驻马店市| 赤峰市| 禹州市| 岳普湖县| 吴江市| 寿光市| 三台县| 白朗县| 甘德县| 玛曲县|