shnulaa

          Never deter till tomorrow that which you can do today
          posts - 15, comments - 0, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Blind Cmd or bash

          Posted on 2010-09-26 16:36 shnulaa 閱讀(178) 評論(0)  編輯  收藏 所屬分類: java
           1package cn.liuyq;
           2
           3import java.io.BufferedReader;
           4import java.io.BufferedWriter;
           5import java.io.IOException;
           6import java.io.InputStream;
           7import java.io.InputStreamReader;
           8import java.io.OutputStream;
           9import java.io.OutputStreamWriter;
          10
          11public class CombineStream extends Thread {
          12    private InputStream is;
          13    private OutputStream os;
          14
          15    /**
          16     * 
          17     * @param is
          18     * @param os
          19     */

          20    public CombineStream(InputStream is, OutputStream os) {
          21        this.is = is;
          22        this.os = os;
          23    }

          24
          25    /**
          26     * 
          27     * @throws Throwable
          28     */

          29    public void run() {
          30        BufferedReader br = null;
          31        BufferedWriter bw = null;
          32        try {
          33            br = new BufferedReader(new InputStreamReader(is));
          34            bw = new BufferedWriter(new OutputStreamWriter(os));
          35
          36            char[] buffer = new char[1024*5];
          37            int charAt;
          38            while ((charAt = br.read(buffer, 0, buffer.length)) > 0{
          39                bw.write(buffer,0,charAt);
          40                bw.flush();
          41            }

          42
          43        }
           catch (Throwable e) {
          44
          45        }
           finally {
          46            if (br != null{
          47                try {
          48                    br.close();
          49                }
           catch (IOException e) {
          50                    // TODO Auto-generated catch block
          51                    e.printStackTrace();
          52                }

          53            }

          54            if (bw != null{
          55                try {
          56                    bw.close();
          57                }
           catch (IOException e) {
          58                    // TODO Auto-generated catch block
          59                    e.printStackTrace();
          60                }

          61            }

          62        }

          63
          64    }

          65
          66    /**
          67     * 
          68     */

          69    public void destroy() {
          70        if (is != null{
          71            try {
          72                is.close();
          73            }
           catch (IOException e) {
          74                // TODO Auto-generated catch block
          75                e.printStackTrace();
          76            }

          77        }

          78        if (os != null{
          79            try {
          80                os.close();
          81            }
           catch (IOException e) {
          82                // TODO Auto-generated catch block
          83                e.printStackTrace();
          84            }

          85        }

          86    }

          87
          88}

          89
          above is a thread to combine the inputStrean and outputStream.

          BlindSever.java
           1package cn.liuyq;
           2
           3import java.io.InputStream;
           4import java.io.OutputStream;
           5import java.net.InetSocketAddress;
           6import java.net.ServerSocket;
           7import java.net.Socket;
           8
           9public class BlindSever {
          10    
          11    public static void main(String[] args) throws Throwable{
          12        
          13        ServerSocket serverSocket = new ServerSocket();
          14        serverSocket.bind(new InetSocketAddress(1234));
          15        Socket socket = serverSocket.accept();
          16
          17        InputStream is = socket.getInputStream();
          18        OutputStream os = socket.getOutputStream();
          19        
          20        Process process = Runtime.getRuntime().exec("cmd.exe");
          21        InputStream prois = process.getInputStream();
          22        OutputStream proos = process.getOutputStream();
          23        
          24        CombineStream cs1 = new CombineStream(is, proos);
          25        CombineStream cs2 = new CombineStream(prois, os);
          26
          27        cs1.start();
          28        cs2.start();
          29        
          30        
          31    }

          32}

          33
          open a port and ready to receive a sorcket from client and then combine the cmd process input and output with the sockect input and output
          主站蜘蛛池模板: 小金县| 苏尼特左旗| 尼玛县| 岢岚县| 乳山市| 蒙自县| 怀集县| 镇沅| 汨罗市| 灵台县| 景德镇市| 楚雄市| 清涧县| 肥乡县| 晋中市| 山东省| 安徽省| 台州市| 肥城市| 额尔古纳市| 光泽县| 德惠市| 报价| 陕西省| 滨州市| 休宁县| 壶关县| 时尚| 高陵县| 湖北省| 延安市| 霞浦县| 顺平县| 大悟县| 竹北市| 南丰县| 上蔡县| 邢台市| 开化县| 三明市| 新郑市|