protected byte[] sendLoginRequest(RSACipher cipher, IntValue max_channel) throws
            IOException {
        if (ChannelNo != 0xFFFFFFFF) {
            throw new IOException("OCE`lł͂܂B");
        }
        initializePipe();
        RSAKeyPair pair = cipher.getKeyPair();
        /*OCł邱ƂB*/
        NumUtil.writeInteger(PipedOut, HadukiCode.LOGIN_ACCEPT);
        /*@N*/
        byte[] module = pair.getModuleBytes();
        NumUtil.writeInteger(PipedOut, module.length);
        NumUtil.writeInteger(PipedOut, pair.getModuleBits());
        PipedOut.write(module);
        /*J*/
        byte[] public_power = pair.getPowerPublicBytes();
        NumUtil.writeInteger(PipedOut, public_power.length);
        NumUtil.writeInteger(PipedOut, pair.getPowerBits());
        PipedOut.write(public_power);
        /*pX[h*/
        byte[] enc_pass = cipher.encData(Password, 0, Password.length);
        NumUtil.writeInteger(PipedOut, enc_pass.length);
        NumUtil.writeInteger(PipedOut, Password.length);
        PipedOut.write(enc_pass);
        /*M*/
        PipedOut.flush();
        PipedOut.close();
        InputStream is = null;
        try {
            is = sendPost();
            System.out.println("܂ł");
            /*ʂ擾*/
            int code = NumUtil.readInteger(is);
            if (code != HadukiCode.LOGIN_SUCCESS) {
                return null;
            }
            System.out.println("܂ł2");
            /*`l*/
            int channel = NumUtil.readInteger(is);
            max_channel.setValue(channel);
            /*f[^TCY*/
            int data_size = NumUtil.readInteger(is);
            /*IWiTCY*/
            int org_size = NumUtil.readInteger(is);
            if (org_size > data_size) {
                throw new IOException("IWif[^TCYÍς݃TCY@͂肦܂B");
            }
            /*Íς݌f[^ǂݍ*/
            byte enc_data[] = new byte[data_size];
            int read_size = BuffUtil.readStream(is, enc_data, 0, data_size);
            if (read_size != data_size) {
                throw new IOException("f[^TCY܂B");
            }
            /**/
            byte[] dec_data = new byte[org_size];
            byte[] tmp = cipher.decData(enc_data, 0, data_size);
            if (tmp.length < org_size) {
                throw new IOException("RC4̒B");
            }
            System.arraycopy(tmp, 0, dec_data, 0, org_size);
            return dec_data;
        } finally {
            if(is != null){
                is.close();
            }
        }
    }