分享一个使用Java写的一个Telnet客户端(1)

2025-10-23 20:23:35

1、先看看用到的Jar

commons-net-3.4.jar

分享一个使用Java写的一个Telnet客户端(1)

2、启动一个Telnet服务器

这次使用Redis服务器来做这个Telnet服务器

分享一个使用Java写的一个Telnet客户端(1)

3、先看看功能

keys *

*0

set hello "HelloTelnetClient"

+OK

get hello

$17

HelloTelnetClient

分享一个使用Java写的一个Telnet客户端(1)

4、上代码

工具类:

package chapter5;

import org.apache.commons.net.io.Util;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

/**

* This is a utility class providing a reader/writer capability required

* by the weatherTelnet, rexec, rshell, and rlogin example programs.

* The only point of the class is to hold the static method readWrite

* which spawns a reader thread and a writer thread.  The reader thread

* reads from a local input source (presumably stdin) and writes the

* data to a remote output destination.  The writer thread reads from

* a remote input source and writes to a local output destination.

* The threads terminate when the remote input source closes.

* *

*/

public final class IOUtil {

   public static final void readWrite(final InputStream remoteInput,

                                      final OutputStream remoteOutput,

                                      final InputStream localInput,

                                      final OutputStream localOutput) {

       Thread reader, writer;

       reader = new Thread() {

           @Override

           public void run() {

               int ch;

               try {

                   while (!interrupted() && (ch = localInput.read()) != -1) {

                       remoteOutput.write(ch);

                       remoteOutput.flush();

                   }

               } catch (IOException e) {

                   e.printStackTrace();

               }

           }

       };

       writer = new Thread() {

           @Override

           public void run() {

               try {

                   Util.copyStream(remoteInput, localOutput);

               } catch (IOException e) {

                   e.printStackTrace();

                   System.exit(1);

               }

           }

       };

       writer.setPriority(Thread.currentThread().getPriority() + 1);

       writer.start();

       reader.setDaemon(true);

       reader.start();

       try {

           writer.join();

           reader.interrupt();

       } catch (InterruptedException e) {

           e.printStackTrace();

       }

   }

}

分享一个使用Java写的一个Telnet客户端(1)

分享一个使用Java写的一个Telnet客户端(1)

5、主控代码:

package chapter5;

import org.apache.commons.net.telnet.TelnetClient;

import java.io.IOException;

public class TelnetDemo {

   public static void main(String[] args) throws IOException {

       TelnetClient telnet = new TelnetClient();

       String remoteIp = "192.168.31.249";

       int remotePort = 6379;

       telnet.connect(remoteIp, remotePort);

       IOUtil.readWrite(telnet.getInputStream(), telnet.getOutputStream(),

               System.in, System.out);

       telnet.disconnect();

       System.exit(0);

   }

}

分享一个使用Java写的一个Telnet客户端(1)

6、要想停止正在执行的主进程呢

停止telnet服务器呢

只所以可以这样,是因为代码设计的比较合理

有时间给大家分析下这段有意思的代码

分享一个使用Java写的一个Telnet客户端(1)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢