<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    方槍槍的java世界

    不要因?yàn)轱L(fēng)雨飄落就停止了你的腳步,真正的得失就在你的心中。 做喜歡做的事,不輕言放棄!

    01 一個(gè)簡(jiǎn)單的Http客戶端_SimpleHttpClient(Socket)

    package com.tianhe.ot.http.bak;

    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.net.Socket;

    import com.tianhe.frm.http.server.Constant;
    import com.tianhe.frm.utils.SocketUtil;

    public class SimpleHttpClientSocket implements Runnable
    {
        private ResUrlBean resUrlBean;
       
        private String resName;
       
        private String resUrl;
       
        public void setResUrlBean(ResUrlBean resUrlBean)
        {
            this.resUrlBean = resUrlBean;
        }
       
        public void setResName(String resName)
        {
            this.resName = resName;
        }
       
        public void setResUrl(String resUrl)
        {
            this.resUrl = resUrl;
        }
       
        public SimpleHttpClientSocket(ResUrlBean resUrlBean, String resUrl, String resName)
        {
            this.resUrlBean = resUrlBean;
            this.resName = resName;
            this.resUrl = resUrl;
        }
       
        public void run()
        {
            long beginTime = System.currentTimeMillis();
           
            String vsTemp;
           
            Socket socket = null;
            InputStream is = null;
            OutputStream os = null;
           
            BufferedReader in = null;
           
            int resSize = 0;
           
            try
            {
                socket = createSocket(resUrlBean.getHost(), resUrlBean.getPort());
                is = socket.getInputStream();
                os = socket.getOutputStream();
               
                resUrl = "           
                // ////////////////////////////////////////////////////////////////////////
                // 鍙戦?璇鋒眰
                StringBuffer sb = new StringBuffer();
                appendLn(sb, "GET " + resUrl + " HTTP/1.1");
                appendLn(sb,
                        "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*");
                appendLn(sb, "Accept-Language: zh-cn");
                appendLn(sb, "UA-CPU: x86");
                appendLn(sb, "Accept-Encoding: gzip, deflate");
                appendLn(sb,
                        "Operator-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)");
                appendLn(sb, "Host: " + resUrlBean.getHost());
                appendLn(sb, "Connection: Keep-Alive");
                appendLn(sb);
                os.write(sb.toString().getBytes());
                os.flush();
               
                // ////////////////////////////////////////////////////////////////////////
                // 鎺ユ敹鍝嶅簲
                in = new BufferedReader(new InputStreamReader(is));
                int contentLength = 0;
                String line = in.readLine();
                while ((line = in.readLine()) != null)
                {
                   
                    if (line.startsWith(Constant.CONTENT_LENGTH))
                    {
                        vsTemp = line.substring(Constant.CONTENT_LENGTH.length());
                        contentLength = Integer.valueOf(vsTemp);
                    }
                   
                    System.out.println(line);
                   
                    if (line.equals(""))
                        break;
                }
               
                // 鍐欏叆鏂囦歡
                if (contentLength > 0)
                {
                    File file = resUrlBean.getTargetFile(resName);
                    if (!file.exists())
                    {
                        file.createNewFile();
                    }
                   
                    int len = -1;
                    byte[] buff = new byte[8192];
                    FileOutputStream fos = new FileOutputStream(file);
                    while ((len = is.read(buff)) != -1)
                    {
                        fos.write(buff, 0, len);
                        resSize = resSize + len;
                    }
                   
                    fos.flush();
                    fos.close();
                    os.close();
                    in.close();
                }
               
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
            finally
            {
                SocketUtil.close(is);
                SocketUtil.close(os);
                SocketUtil.close(socket);
            }
           
            long used = System.currentTimeMillis() - beginTime;
            System.out.println(resUrl + " succeed, used=" + used + ", resSize=" + resSize);
        }
       
        private StringBuffer appendLn(StringBuffer sb, String xxx)
        {
            sb.append(xxx).append("\r\n");
            return sb;
        }
       
        private StringBuffer appendLn(StringBuffer sb)
        {
            sb.append("\r\n");
            return sb;
        }
       
        private static String getAllUrl(String[] args)
        {
            String temp = "
            if (args != null && args.length > 0)
            {
                temp = args[0];
            }
            return temp;
        }
       
        private static String getTargetDir(String[] args)
        {
            String temp = "d:/wallpaper";
            if (args != null && args.length > 1)
            {
                temp = args[1];
            }
            return temp;
        }
       
        private static String getProxyHost(String[] args)
        {
            String temp = "";
            if (args != null && args.length > 2)
            {
                temp = args[2];
            }
            return temp;
        }
       
        private static int getProxyPort(String[] args)
        {
            int temp = 80;
            if (args != null && args.length > 3)
            {
                temp = Integer.valueOf(args[3]);
            }
            return temp;
        }
       
        private static ResUrlBean createResUrlBean(String proxyHost, int proxyPort, String allUrl, String targetDir)
        {
            ResUrlBean rub = null;
            if (proxyHost != null && (!proxyHost.trim().equals("")))
            {
                // for url use
                rub = new ResUrlBean(true);
                rub.setHost(proxyHost);
                rub.setPort(proxyPort);
            }
            else
           
            {
                // for socket use, not for url use
                rub = new ResUrlBean();
                rub.setHost(getHostFromUrl(allUrl));
                rub.setPort(getPortFromUrl(allUrl));
            }
            rub.setAllUrl(allUrl);
            rub.setTargetDir(targetDir);
           
            {
                int pos1 = -1;
                int pos2 = -1;
                int pos3 = -1;
               
                String ts = "";
               
                pos1 = allUrl.indexOf("://") + 3;
                pos2 = allUrl.indexOf("/", pos1) + 1;
                pos3 = allUrl.lastIndexOf("/");
                ts = allUrl.substring(pos2, pos3);
                rub.setRelativePath(ts);
            }
           
            rub.setBaseUrl(allUrl.substring(0, allUrl.lastIndexOf("/") + 1));
            rub.setSuffix(allUrl.substring(allUrl.length() - 4));
            rub.setStartIndex(1);
           
            {
                String ts = allUrl.substring(allUrl.lastIndexOf("/") + 1, allUrl.length() - 4);
                int pos = 0;
                char[] tc = ts.toCharArray();
                for (int i = tc.length - 1; i > 0; i--)
                {
                    int ti = Integer.valueOf(tc[i]);
                    if (ti < 48 || ti > 57)
                    {
                        pos = i + 1;
                        break;
                    }
                }
                rub.setPrefix(ts.substring(0, pos));
                rub.setEndIndex(Integer.valueOf(ts.substring(pos)));
                rub.setFormat("%0" + ts.substring(pos).length() + "d");
            }
           
            System.out.println("resUrlBean=" + rub.toString());
            return rub;
        }
       
        private static String getHostFromUrl(String allUrl)
        {
            // allUrl = "
            // allUrl = "       
            int pos1 = -1;
            int pos2 = -1;
            String ts = "";
           
            pos1 = allUrl.indexOf("://") + 3;
            pos2 = allUrl.indexOf("/", pos1);
           
            ts = allUrl.substring(pos1, pos2);
            pos1 = ts.indexOf(":");
            if (pos1 > 0)
            {
                ts = ts.substring(0, pos1);
            }
           
            // System.out.println("getHostFromUrl:" + ts);
            return ts;
        }
       
        private static int getPortFromUrl(String allUrl)
        {
            // allUrl = "
            // allUrl = "       
            int port = 80;
           
            int pos1 = -1;
            int pos2 = -1;
            String ts = "";
           
            pos1 = allUrl.indexOf("://") + 3;
            pos2 = allUrl.indexOf("/", pos1);
           
            ts = allUrl.substring(pos1, pos2);
            pos1 = ts.indexOf(":");
            if (pos1 > 0)
            {
                ts = ts.substring(pos1) + 1;
                port = Integer.valueOf(ts);
            }
           
            // System.out.println("getPortFromUrl:" + port);
            return port;
        }
       
        private static String createResName(ResUrlBean rub, int i)
        {
            StringBuffer sb = new StringBuffer();
            sb.append(rub.getPrefix());
            String format = rub.getFormat();
            if (format != null && (!format.trim().equals("")))
            {
                sb.append(String.format(format, i));
            }
            sb.append(rub.getSuffix());
            return sb.toString();
        }
       
        private static SimpleHttpClientSocket createSimpleHttpClient(ResUrlBean rub, int i)
        {
            String resName = createResName(rub, i);
            String resUrl = rub.getBaseUrl() + resName;
            SimpleHttpClientSocket client = new SimpleHttpClientSocket(rub, resUrl, resName);
            return client;
        }
       
        //
    http://bizhi.zhuoku.com/2012/04/11/shanshui/Shanshui01.jpg
        public static void main(String[] args)
        {
            String allUrl = getAllUrl(args);
            System.out.println("allUrl=" + allUrl);
           
            String targetDir = getTargetDir(args);
            System.out.println("targetDir=" + targetDir);
           
            String proxyHost = getProxyHost(args);
            System.out.println("proxyHost=" + proxyHost);
           
            int proxyPort = getProxyPort(args);
            System.out.println("proxyPort=" + proxyPort);
           
            ResUrlBean rub = createResUrlBean(proxyHost, proxyPort, allUrl, targetDir);
           
            try
            {
                for (int i = rub.getStartIndex(); i <= rub.getEndIndex(); i++)
                {
                    SimpleHttpClientSocket client = createSimpleHttpClient(rub, i);
                    new Thread(client).start();
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
           
        }
       
        private Socket createSocket(String proxyHost, int proxyPort) throws Exception
        {
            Socket socket = null;
            try
            {
                socket = new Socket(proxyHost, proxyPort);
            }
            catch (Exception e)
            {
                SocketUtil.close(socket);
                throw e;
            }
           
            if (socket == null)
            {
                System.exit(1);
            }
           
            return socket;
        }
    }

    posted on 2012-07-09 23:07 做強(qiáng)大的自己 閱讀(659) 評(píng)論(0)  編輯  收藏 所屬分類: Socket

    主站蜘蛛池模板: 羞羞网站免费观看| 亚洲色欲色欲www在线丝| 亚洲人成黄网在线观看| 日日麻批免费40分钟无码| 亚洲Av综合色区无码专区桃色| 亚洲日韩在线观看免费视频| 亚洲狠狠爱综合影院婷婷| free哆拍拍免费永久视频| 在线观看午夜亚洲一区| 丝袜捆绑调教视频免费区| 国产亚洲一区二区手机在线观看 | 亚洲国产精品xo在线观看| 99久久精品日本一区二区免费| 亚洲午夜久久久久久尤物| 一个人免费高清在线观看| 亚洲AV永久无码精品放毛片| 亚洲AⅤ永久无码精品AA| 国产一级高青免费| 精品亚洲aⅴ在线观看| 久久久久久免费视频| 午夜亚洲乱码伦小说区69堂| 亚洲七七久久精品中文国产| 国内精品久久久久影院免费 | 日韩亚洲国产综合高清| 国产精品无码一二区免费 | 亚洲欧洲一区二区| 无码人妻一区二区三区免费手机| 亚洲成av人在线观看网站| 国产偷窥女洗浴在线观看亚洲| 久久免费国产视频| 亚洲中文无码卡通动漫野外| 亚洲国产91精品无码专区| 污视频在线免费观看| 亚洲日韩看片无码电影| 久久影院亚洲一区| 免费精品国产日韩热久久| 杨幂最新免费特级毛片| 久久久婷婷五月亚洲97号色| 免费萌白酱国产一区二区| 色欲A∨无码蜜臀AV免费播 | 亚洲AV日韩综合一区尤物|