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

📄 test_telnet.java

📁 实现telnet功能
💻 JAVA
字号:
package network;

import java.net.Socket;
import java.net.InetAddress;
import java.io.*;
import java.nio.ByteBuffer;

/**
 * Created by IntelliJ IDEA.
 * User: franck
 * Date: 2007-4-25
 * Time: 16:57:07
 * To change this template use File | Settings | File Templates.
 */
public class test_telnet extends Thread {
    Socket s = null;
    BufferedReader reader = null;
    InputStream in = null;
    OutputStream out = null;
    BufferedReader usr = null;
    PrintWriter writer = null;
    request req = null;
    String host = null;
    int port;

    public test_telnet(String host, int port) {
        this.host = host;
        this.port = port;
    }

    public void run() {
        try {
//            String host = "bbs.fudan.edu.cn";
//            s = new Socket(host, 23);
//            String host = "ftp.hjenglish.com";
//            s = new Socket(host, 21);

            s = new Socket(host, port);
            String line = "";
            String usrReply = "";
            //String startStr = "请输入帐号(试用请输入'guest', 注册请输入'new'):";

            usr = new BufferedReader(new InputStreamReader(System.in));
            reader = new BufferedReader(new InputStreamReader(s.getInputStream()));
            writer = new PrintWriter(new OutputStreamWriter(s.getOutputStream()));
            in = s.getInputStream();
            out = s.getOutputStream();
            System.out.println(s.toString());

            req = new request(in, this);
            req.start();


//            int totalBinary = -1;
            while (true) {
                if ((line = usr.readLine().trim()) != null) {
                    //System.out.print(line);
                    byte[] binary = (line + "\r\n").getBytes();
//                    writer.print(line+"\n");
                    out.write(binary);
                    out.flush();

                    if (line.equals("quit"))
                        break;
                }

                synchronized (this) {
                    wait(50);
                }
            }

            writer.close();
            usr.close();
            reader.close();
            in.close();
            out.close();
            s.close();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                s.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        if (args.length == 2) {
            String host = args[0];
            int port = Integer.parseInt(args[1]);
            test_telnet test = new test_telnet(host, port);
            test.start();
        }
    }

    class request extends Thread {
        //BufferedReader br = null;
        InputStream rin = null;
        test_telnet telnet = null;

        public request(/*BufferedReader r,*/ InputStream in, test_telnet tt) {
            //this.br = r;
            this.rin = in;
            this.telnet = tt;
        }

        public void run() {
            try {
                int totalBinary = -1;
                String line = "";
                InputStreamReader r = new InputStreamReader(in);
                while (true) {
                    if (telnet.s.isClosed()) break;
                    if ((totalBinary = in.available()) > 0) {
                        byte[] binary = new byte[totalBinary];
                        in.read(binary);

                        line = new String(binary,"gb2312");
                        System.out.print(line);
                    }

                    synchronized (this) {
                        wait(20);
                    }
                }

            } catch (Exception e) {
                e.printStackTrace();
            } finally {
            }
        }


    }
}

⌨️ 快捷键说明

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