⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 telnetclienttest.java

📁 apache推出的net包
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
    public void testOptionRenegotiation() throws Exception    {        boolean negotiation1_ok = false;        byte buffread[] = new byte[6];        byte send[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO,             (byte) TelnetOption.ECHO,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD        };        byte expected[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD        };        byte buffread2[] = new byte[3];        byte send2[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT,             (byte) TelnetOption.ECHO,        };        byte expected2[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT,             (byte) TelnetOption.ECHO,        };        InputStream is = OPTIONS.server.getInputStream();        OutputStream os = OPTIONS.server.getOutputStream();        Thread.sleep(1000);        is.skip(is.available());        os.write(send);        os.flush();        Thread.sleep(1000);        if(is.available() == 6)        {            is.read(buffread);            if(equalBytes(buffread, expected))                negotiation1_ok = true;            if(negotiation1_ok)            {                negotiation1_ok = false;                os.write(send2);                os.flush();                Thread.sleep(1000);                if(is.available() == 3)                {                    is.read(buffread2);                    if(equalBytes(buffread2, expected2))                            negotiation1_ok = true;                }            }        }        assertTrue(negotiation1_ok);        assertTrue(!OPTIONS.client.getLocalOptionState(TelnetOption.ECHO));    }    /***     * test of option negotiation notification     ***/    public void testNotification() throws Exception    {        byte buffread1[] = new byte[6];        byte send1[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO, (byte) 15,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WILL, (byte) 15,        };        byte buffread2[] = new byte[9];        byte send2[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO,             (byte) TelnetOption.TERMINAL_TYPE,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT,             (byte) TelnetOption.ECHO,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO,             (byte) TelnetOption.SUPPRESS_GO_AHEAD,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD        };        byte buffread2b[] = new byte[11];        numdo = 0;        numdont = 0;        numwill = 0;        numwont = 0;        OPTIONS.client.registerNotifHandler(this);        InputStream is1 = STANDARD.server.getInputStream();        OutputStream os1 = STANDARD.server.getOutputStream();        is1.skip(is1.available());        os1.write(send1);        os1.flush();        Thread.sleep(500);        if(is1.available() > 0)        {            is1.read(buffread1);        }        InputStream is2 = OPTIONS.server.getInputStream();        OutputStream os2 = OPTIONS.server.getOutputStream();        Thread.sleep(500);        is2.skip(is2.available());        os2.write(send2);        os2.flush();        Thread.sleep(500);        if(is2.available() > 0)        {            is2.read(buffread2);                Thread.sleep(1000);                if(is2.available() > 0)                {                    is2.read(buffread2b);                }        }        assertTrue(numdo == 2);        assertTrue(numdont == 1);        assertTrue(numwont == 1);        assertTrue(numwill == 0);    }    /***     * protocol compliance test in case of option handler removal     ***/    public void testDeleteOptionHandler() throws Exception    {        boolean remove_ok = false;        boolean remove_invalid_ok1 = false;        boolean remove_invalid_ok2 = false;        byte buffread[] = new byte[6];        byte send[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO,             (byte) TelnetOption.ECHO,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO,             (byte) TelnetOption.SUPPRESS_GO_AHEAD,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WILL,             (byte) TelnetOption.SUPPRESS_GO_AHEAD        };        byte expected[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT,             (byte) TelnetOption.SUPPRESS_GO_AHEAD        };        InputStream is = OPTIONS.server.getInputStream();        OutputStream os = OPTIONS.server.getOutputStream();        Thread.sleep(1000);        is.skip(is.available());        os.write(send);        os.flush();        Thread.sleep(1000);        if(is.available() == 0)        {            OPTIONS.client.deleteOptionHandler(TelnetOption.SUPPRESS_GO_AHEAD);            Thread.sleep(1000);            if(is.available() == 6)            {                is.read(buffread);                if(equalBytes(buffread, expected))                    remove_ok = true;            }        }        try        {            OPTIONS.client.deleteOptionHandler(TelnetOption.SUPPRESS_GO_AHEAD);        }        catch (Exception e)        {            remove_invalid_ok1 = true;        }        try        {            OPTIONS.client.deleteOptionHandler(550);        }        catch (Exception e)        {            remove_invalid_ok2 = true;        }        assertTrue(remove_ok);        assertTrue(remove_invalid_ok1);        assertTrue(remove_invalid_ok2);        assertTrue(OPTIONS.client.getLocalOptionState(TelnetOption.ECHO));        assertTrue(!OPTIONS.client.getLocalOptionState(TelnetOption.SUPPRESS_GO_AHEAD));        assertTrue(!OPTIONS.client.getLocalOptionState(TelnetOption.SUPPRESS_GO_AHEAD));    }    /***     * test of AYT functionality     ***/    public void testAYT() throws Exception    {        boolean ayt_true_ok = false;        boolean ayt_false_ok = false;        byte AYT[] = { (byte) TelnetCommand.IAC, (byte) TelnetCommand.AYT };        byte response[] =             { (byte) '[', (byte) 'Y', (byte) 'e', (byte) 's', (byte) ']' };        String inputs[] = new String[1];        String outputs[] = new String[1];        inputs[0] = new String (AYT);        outputs[0] = new String (response);        OutputStream os = ANSI.server.getOutputStream();        InputStream is = ANSI.server.getInputStream();        TelnetTestResponder tr =             new TelnetTestResponder(is, os, inputs, outputs, 30000);        assertNotNull(tr);        boolean res1 = ANSI.client.sendAYT(2000);        if(res1 == true)            ayt_true_ok=true;        Thread.sleep(1000);        is.skip(is.available());        boolean res2 = ANSI.client.sendAYT(2000);        if(res2 == false)            ayt_false_ok=true;        assertTrue(ayt_true_ok);        assertTrue(ayt_false_ok);    }    /***     * test of Spy functionality     ***/    public void testSpy() throws Exception    {        boolean test1spy_ok = false;        boolean test2spy_ok = false;        boolean stopspy_ok = false;        byte expected1[] =         	{ (byte) 't', (byte) 'e', (byte) 's', (byte) 't', (byte) '1' };        byte expected2[] =         	{ (byte) 't', (byte) 'e', (byte) 's', (byte) 't', (byte) '2' };        PipedOutputStream po = new PipedOutputStream();        PipedInputStream pi = new PipedInputStream(po);        OutputStream os = STANDARD.server.getOutputStream();        OutputStream ostc = STANDARD.client.getOutputStream();        STANDARD.client.registerSpyStream(po);        os.write("test1".getBytes());        os.flush();        Thread.sleep(1000);        byte buffer[] = new byte[5];        if(pi.available() == 5)        {            pi.read(buffer);            if(equalBytes(buffer, expected1))                test1spy_ok = true;        }        ostc.write("test2".getBytes());        ostc.flush();        Thread.sleep(1000);        if(pi.available() == 5)        {            pi.read(buffer);            if(equalBytes(buffer, expected2))                test2spy_ok = true;        }        STANDARD.client.stopSpyStream();        os.write("test1".getBytes());        os.flush();        ostc.write("test2".getBytes());        ostc.flush();        Thread.sleep(1000);        if(pi.available() == 0)        {            stopspy_ok = true;        }        assertTrue(test1spy_ok);        assertTrue(test2spy_ok);        assertTrue(stopspy_ok);    }    /***     * test of setReaderThread     ***/    public void testSetReaderThread() throws Exception    {        boolean negotiation1_ok = false;        boolean negotiation2_ok = false;        boolean read_ok = false;        byte buffread1[] = new byte[6];        byte send1[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DO, (byte) 15,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WILL, (byte) 15,        };        byte expected1[] =        {            (byte) TelnetCommand.IAC, (byte) TelnetCommand.WONT, (byte) 15,            (byte) TelnetCommand.IAC, (byte) TelnetCommand.DONT, (byte) 15,        };        InputStream is1 = NOREAD.server.getInputStream();        OutputStream os1 = NOREAD.server.getOutputStream();        is1.skip(is1.available());        os1.write(send1);        os1.flush();        os1.write("A".getBytes());        os1.flush();        Thread.sleep(1000);        InputStream instr = NOREAD.client.getInputStream();        byte[] buff = new byte[4];        int ret_read = 0;        ret_read = instr.read(buff);        if((ret_read == 1) && (buff[0] == 'A'))        {            read_ok = true;        }       // if(is1.available() == 6)        //{            is1.read(buffread1);            if(equalBytes(buffread1, expected1))                negotiation1_ok = true;        //}                InputStream is2 = STANDARD.server.getInputStream();        OutputStream os2 = STANDARD.server.getOutputStream();        Thread.sleep(1000);        is2.skip(is2.available());        os2.write(send1);        os2.flush();        Thread.sleep(1000);        //if(is2.available() == 6)        //{            is2.read(buffread1);            if(equalBytes(buffread1, expected1))                negotiation2_ok = true;        //}        assertTrue(!NOREAD.client.getReaderThread());        assertTrue(STANDARD.client.getReaderThread());        assertTrue("Expected read_ok to be true, got " + read_ok, read_ok);        assertTrue("Expected negotiation1_ok to be true, got " + negotiation1_ok, negotiation1_ok);        assertTrue("Expected negotiation2_ok to be true, got " + negotiation2_ok, negotiation2_ok);    }    /***     * Helper method. compares two arrays of int     ***/    protected boolean equalBytes(byte a1[], byte a2[])    {        if(a1.length != a2.length)        {            return(false);        }        else        {            boolean result = true;            for(int ii=0; ii<a1.length; ii++)            {            	                if(a1[ii]!= a2[ii])                	result = false;            }            return(result);        }    }    /***     * Callback method called when TelnetClient receives an option     * negotiation command.     * <p>     * @param negotiation_code - type of negotiation command received     * (RECEIVED_DO, RECEIVED_DONT, RECEIVED_WILL, RECEIVED_WONT)     * <p>     * @param option_code - code of the option negotiated     * <p>     ***/    public void receivedNegotiation(int negotiation_code, int option_code)    {        if(negotiation_code == TelnetNotificationHandler.RECEIVED_DO)        {            numdo++;        }        else if(negotiation_code == TelnetNotificationHandler.RECEIVED_DONT)        {            numdont++;        }        else if(negotiation_code == TelnetNotificationHandler.RECEIVED_WILL)        {            numwill++;        }        else if(negotiation_code == TelnetNotificationHandler.RECEIVED_WONT)        {            numwont++;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -