亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pgtcpredirect.java

?? 非常棒的java數據庫
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (license2)
 * Initial Developer: H2 Group
 */
package org.h2.tools.net;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * This class helps debug the PostgreSQL network protocol. 
 * It listens on one port, and sends the exact same data to another port.
 */
public class PgTcpRedirect {

    public static void main(String[] args) throws Exception {
        new PgTcpRedirect().loop(args);
    }

    void loop(String[] args) throws Exception {
        // MySQL protocol:
        // http://www.redferni.uklinux.net/mysql/MySQL-Protocol.html
        // PostgreSQL protocol:
        // http://developer.postgresql.org/pgdocs/postgres/protocol.html
        // int portServer = 9083, portClient = 9084;
        // int portServer = 3306, portClient = 3307;
        // int portServer = 5435, portClient = 5433; // H2 PgServer
        int portServer = 5432, portClient = 5433; // PostgreSQL

        for (int i = 0; i < args.length; i++) {
            if ("-client".equals(args[i])) {
                portClient = Integer.parseInt(args[++i]);
            } else if ("-server".equals(args[i])) {
                portServer = Integer.parseInt(args[++i]);
            }
        }
        ServerSocket listener = new ServerSocket(portClient);
        while (true) {
            Socket client = listener.accept();
            Socket server = new Socket("localhost", portServer);
            TcpRedirectThread c = new TcpRedirectThread(client, server, true);
            TcpRedirectThread s = new TcpRedirectThread(server, client, false);
            new Thread(c).start();
            new Thread(s).start();
        }
    }

    private class TcpRedirectThread implements Runnable {

        private Socket read, write;
        private int state;
        private boolean client;

        private static final int STATE_INIT_CLIENT = 0, STATE_REGULAR = 1;

        TcpRedirectThread(Socket read, Socket write, boolean client) {
            this.read = read;
            this.write = write;
            this.client = client;
            state = client ? STATE_INIT_CLIENT : STATE_REGULAR;
        }

        String readStringNull(InputStream in) throws IOException {
            StringBuffer buff = new StringBuffer();
            while (true) {
                int x = in.read();
                if (x <= 0) {
                    break;
                }
                buff.append((char) x);
            }
            return buff.toString();
        }

        private void println(String s) {
            // System.out.println(s);
        }

        private boolean processClient(InputStream inStream, OutputStream outStream) throws IOException {
            DataInputStream dataIn = new DataInputStream(inStream);
            ByteArrayOutputStream buff = new ByteArrayOutputStream();
            DataOutputStream dataOut = new DataOutputStream(buff);
            if (state == STATE_INIT_CLIENT) {
                state = STATE_REGULAR;
                int len = dataIn.readInt();
                dataOut.writeInt(len);
                len -= 4;
                byte[] data = new byte[len];
                dataIn.readFully(data, 0, len);
                dataOut.write(data);
                dataIn = new DataInputStream(new ByteArrayInputStream(data, 0, len));
                int version = dataIn.readInt();
                if (version == 80877102) {
                    println("CancelRequest");
                    println(" pid: " + dataIn.readInt());
                    println(" key: " + dataIn.readInt());
                } else if (version == 80877103) {
                    println("SSLRequest");
                } else {
                    println("StartupMessage");
                    println(" version " + version + " (" + (version >> 16) + "." + (version & 0xff) + ")");
                    while (true) {
                        String param = readStringNull(dataIn);
                        if (param.length() == 0) {
                            break;
                        }
                        String value = readStringNull(dataIn);
                        println(" param " + param + "=" + value);
                    }
                }
            } else {
                int x = dataIn.read();
                if (x < 0) {
                    println("end");
                    return false;
                }
                // System.out.println(" x=" + (char)x+" " +x);
                dataOut.write(x);
                int len = dataIn.readInt();
                dataOut.writeInt(len);
                len -= 4;
                byte[] data = new byte[len];
                dataIn.readFully(data, 0, len);
                dataOut.write(data);
                dataIn = new DataInputStream(new ByteArrayInputStream(data, 0, len));
                switch (x) {
                case 'B': {
                    println("Bind");
                    println(" destPortal: " + readStringNull(dataIn));
                    println(" prepName: " + readStringNull(dataIn));
                    int formatCodesCount = dataIn.readShort();
                    for (int i = 0; i < formatCodesCount; i++) {
                        println(" formatCode[" + i + "]=" + dataIn.readShort());
                    }
                    int paramCount = dataIn.readShort();
                    for (int i = 0; i < paramCount; i++) {
                        int paramLen = dataIn.readInt();
                        println(" length[" + i + "]=" + paramLen);
                        byte[] d2 = new byte[paramLen];
                        dataIn.readFully(d2);
                    }
                    int resultCodeCount = dataIn.readShort();
                    for (int i = 0; i < resultCodeCount; i++) {
                        println(" resultCodeCount[" + i + "]=" + dataIn.readShort());
                    }
                    break;
                }
                case 'C': {
                    println("Close");
                    println(" type: (S:prepared statement, P:portal): " + dataIn.read());
                    break;
                }
                case 'd': {
                    println("CopyData");
                    break;
                }
                case 'c': {
                    println("CopyDone");
                    break;
                }
                case 'f': {
                    println("CopyFail");
                    println(" message: " + readStringNull(dataIn));
                    break;
                }
                case 'D': {
                    println("Describe");
                    println(" type (S=prepared statement, P=portal): " + (char) dataIn.readByte());
                    println(" name: " + readStringNull(dataIn));
                    break;
                }
                case 'E': {
                    println("Execute");
                    println(" name: " + readStringNull(dataIn));
                    println(" maxRows: " + dataIn.readShort());
                    break;
                }
                case 'H': {
                    println("Flush");
                    break;
                }
                case 'F': {
                    println("FunctionCall");
                    println(" objectId:" + dataIn.readInt());
                    int columns = dataIn.readShort();
                    for (int i = 0; i < columns; i++) {
                        println(" formatCode[" + i + "]: " + dataIn.readShort());
                    }
                    int count = dataIn.readShort();
                    for (int i = 0; i < count; i++) {
                        int l = dataIn.readInt();
                        println(" len[" + i + "]: " + l);
                        if (l >= 0) {
                            for (int j = 0; j < l; j++) {
                                dataIn.readByte();
                            }
                        }
                    }
                    println(" resultFormat: " + dataIn.readShort());
                    break;
                }
                case 'P': {
                    println("Parse");
                    println(" name:" + readStringNull(dataIn));
                    println(" query:" + readStringNull(dataIn));
                    int count = dataIn.readShort();
                    for (int i = 0; i < count; i++) {
                        println(" [" + i + "]: " + dataIn.readInt());
                    }
                    break;
                }
                case 'p': {
                    println("PasswordMessage");
                    println(" password: " + readStringNull(dataIn));
                    break;
                }
                case 'Q': {
                    println("Query");
                    println(" sql : " + readStringNull(dataIn));
                    break;
                }
                case 'S': {
                    println("Sync");
                    break;
                }
                case 'X': {
                    println("Terminate");
                    break;
                }
                default:
                    println("############## UNSUPPORTED: " + (char) x);
                }
            }
            dataOut.flush();
            byte[] buffer = buff.toByteArray();
            printData(buffer, buffer.length);
            try {
                outStream.write(buffer, 0, buffer.length);
                outStream.flush();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return true;
        }

        private boolean processServer(InputStream inStream, OutputStream outStream) throws IOException {
            DataInputStream dataIn = new DataInputStream(inStream);
            ByteArrayOutputStream buff = new ByteArrayOutputStream();
            DataOutputStream dataOut = new DataOutputStream(buff);
            int x = dataIn.read();
            if (x < 0) {
                println("end");
                return false;
            }
            // System.out.println(" x=" + (char)x+" " +x);
            dataOut.write(x);
            int len = dataIn.readInt();
            dataOut.writeInt(len);
            len -= 4;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av电影在线不卡| 蜜桃av噜噜一区二区三区小说| 在线观看国产91| 成人免费看片app下载| 国产精品白丝jk白祙喷水网站| 日韩精品久久理论片| 一区二区三区.www| 亚洲美女在线国产| 国产精品午夜电影| 欧美韩日一区二区三区| 国产精品成人免费在线| 综合欧美一区二区三区| 一区二区三区美女视频| 粉嫩蜜臀av国产精品网站| 91在线观看免费视频| 色诱视频网站一区| 欧美日韩一区不卡| 欧美成人video| 欧美国产丝袜视频| 国产自产v一区二区三区c| 国产成人综合视频| 欧美性xxxxxxxx| 精品剧情v国产在线观看在线| 亚洲国产精品一区二区尤物区| 日本特黄久久久高潮| 国产精品1区2区3区| 欧美一区二区人人喊爽| 国产拍揄自揄精品视频麻豆| 一区二区三区日韩在线观看| 91亚洲精品久久久蜜桃网站| 国产精品美女一区二区三区 | 欧美美女网站色| 大美女一区二区三区| 日韩免费一区二区三区在线播放| 国产精品网友自拍| 国产福利精品一区二区| 久久久精品黄色| 亚洲综合色丁香婷婷六月图片| 日韩国产一二三区| 欧美卡1卡2卡| 蜜桃91丨九色丨蝌蚪91桃色| 欧美mv日韩mv国产网站app| 蜜桃久久精品一区二区| 日韩欧美黄色影院| 韩国精品一区二区| 久久亚洲影视婷婷| 一本一道波多野结衣一区二区| 欧美无砖专区一中文字| 亚洲欧美日韩国产一区二区三区 | 精品欧美一区二区在线观看| 老司机精品视频导航| 激情丁香综合五月| 久久久久久久久久久电影| 国产高清久久久久| 中文字幕一区二区三| 国产呦精品一区二区三区网站| 精品视频一区二区三区免费| 日韩国产在线观看| 亚洲天堂成人在线观看| 欧美一区二区视频网站| 制服.丝袜.亚洲.另类.中文| 亚洲日本在线天堂| 午夜在线成人av| 亚洲欧美aⅴ...| 国产成a人无v码亚洲福利| 91福利国产精品| 日本道精品一区二区三区| 91精品国产黑色紧身裤美女| 亚洲天堂2016| 成人午夜视频网站| 欧美精品一区在线观看| 欧美精品一区二区三区四区| 亚洲一区二区三区三| eeuss鲁片一区二区三区| 2021中文字幕一区亚洲| 亚洲一区在线观看免费 | 欧美艳星brazzers| 亚洲三级理论片| 91社区在线播放| 18欧美乱大交hd1984| 成人av资源在线| 欧美亚洲综合另类| 婷婷久久综合九色国产成人 | 91麻豆产精品久久久久久 | 丁香天五香天堂综合| 一区二区三区免费网站| 丰满岳乱妇一区二区三区| 国产精品网站在线观看| va亚洲va日韩不卡在线观看| 亚洲精品伦理在线| 亚洲成人www| 久久蜜桃一区二区| hitomi一区二区三区精品| 亚洲成人你懂的| 精品成a人在线观看| 欧美亚洲国产一区二区三区| 美日韩一区二区三区| 中文乱码免费一区二区| 666欧美在线视频| 国产成a人无v码亚洲福利| 日韩精品每日更新| 亚洲三级视频在线观看| 精品精品国产高清a毛片牛牛 | 老司机免费视频一区二区三区| 国产婷婷色一区二区三区| 麻豆免费精品视频| 亚洲欧美综合另类在线卡通| 精品国产露脸精彩对白| 欧美性大战xxxxx久久久| 成人性生交大合| 丁香婷婷深情五月亚洲| 国产一区二区三区精品视频| 久久精品国产在热久久| 日本特黄久久久高潮| 午夜一区二区三区视频| 亚洲精品欧美激情| 亚洲综合自拍偷拍| 亚洲精品乱码久久久久久| 一区二区三区精品在线| 一区二区日韩电影| 亚洲小少妇裸体bbw| 一区二区三区四区亚洲| 亚洲色图欧美偷拍| 亚洲欧洲中文日韩久久av乱码| 国产精品久久久久久久久搜平片| 欧美激情在线观看视频免费| 亚洲欧洲色图综合| 亚洲精品国产一区二区精华液| 亚洲免费av高清| 日韩精品乱码免费| 国产精品一区二区男女羞羞无遮挡| 国产麻豆精品一区二区| 一本到三区不卡视频| 欧美少妇一区二区| 久久女同性恋中文字幕| 一色桃子久久精品亚洲| 亚洲成人免费视| 91精品国产免费久久综合| 亚洲三级电影网站| 三级精品在线观看| a级高清视频欧美日韩| 51精品国自产在线| 中文字幕久久午夜不卡| 亚洲成a人片综合在线| 成人sese在线| 精品美女在线观看| 丝袜美腿成人在线| 91蜜桃网址入口| 欧美韩国日本综合| 韩国毛片一区二区三区| 欧美系列亚洲系列| 亚洲色图欧美激情| av中文字幕一区| 国产精品福利电影一区二区三区四区| 性做久久久久久| 欧美日韩1区2区| 欧美电影免费观看完整版| 亚洲午夜三级在线| 欧美图片一区二区三区| 亚洲高清不卡在线| 色婷婷av久久久久久久| 亚洲欧洲色图综合| 91国产免费观看| 亚洲第一久久影院| 91超碰这里只有精品国产| 五月婷婷久久丁香| 91精品国产综合久久婷婷香蕉| 日韩av在线免费观看不卡| 日韩亚洲欧美一区二区三区| 久久免费偷拍视频| jlzzjlzz亚洲女人18| 亚洲国产视频在线| 欧美一区二区三区在线观看视频| 奇米影视一区二区三区| heyzo一本久久综合| 亚洲国产成人高清精品| 337p日本欧洲亚洲大胆精品| 成人国产精品免费观看视频| 亚洲一区成人在线| 精品国产免费一区二区三区香蕉 | 樱花影视一区二区| 日韩欧美国产高清| 在线视频综合导航| 国产精品911| 日韩电影网1区2区| 亚洲欧美日韩久久精品| 日韩欧美久久久| 欧美色精品在线视频| 国产91对白在线观看九色| 亚洲高清不卡在线观看| 成人欧美一区二区三区黑人麻豆| 欧美一区二区二区| 欧美亚洲一区二区三区四区| 成人一区二区在线观看| 麻豆中文一区二区| 午夜精品成人在线视频| 一区二区三区在线视频播放| 亚洲色图.com| 亚洲精品第一国产综合野| 1区2区3区欧美|