加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用套接字的java简单telnet客户端

发布时间:2020-12-14 06:05:35 所属栏目:Java 来源:网络整理
导读:我已经阅读了很多关于这个主题的内容,telnet是一个协议,不是简单的套接字连接,等待换行符,使用外部库等等…… 最重要的是,我需要一个快速而脏的java telnet应用程序启动和运行,不一定可扩展,不一定漂亮,所以我试图避免使用库,系统函数调用等.我一直在尝试和
我已经阅读了很多关于这个主题的内容,telnet是一个协议,不是简单的套接字连接,等待换行符,使用外部库等等……

最重要的是,我需要一个快速而脏的java telnet应用程序启动和运行,不一定可扩展,不一定漂亮,所以我试图避免使用库,系统函数调用等.我一直在尝试和测试,到目前为止,当我尝试登录路由器(当然通过telnet)时,我得到了……没有.

这是我到目前为止使用的代码的剪辑,请有人指出我正确的方向,因为我不知道还应该尝试什么,因为我确信它必须是非常简单和愚蠢的东西我失踪了.提前致谢!

Socket socket = new Socket("192.168.1.1",23);
socket.setKeepAlive(true);
BufferedReader r = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter w = new PrintWriter(socket.getOutputStream(),true);

int c=0;
while ((c = r.read()) != -1)
    System.out.print((char)c);

w.print("1234rn"); // also tried simply n or r
//w.flush();
//Thread.sleep(1000);

while ((c = r.read()) != -1)
    System.out.print((char)c);

w.print("1234rn");
//Thread.sleep(1000);

while ((c = r.read()) != -1)
    System.out.print((char)c);

socket.close();

解决方法

如果没有针对您的特定路由器进行测试,很难知道您的示例有什么问题.使用库可能是一个好主意,例如 http://sadun-util.sourceforge.net/telnet_library.html看起来很容易使用.

此网站还说如下:

In order to carry on the conversation,a command is issued by simply sending it on the socket’s outputstream (and using the telnet newline sequence rn):

String command="print hello"; 
 PrintWriter pw = new PrintWriter(
      new OutputStreamWriter(s.getOutputStream()),true);
 pw.print(command+"rn");

If the session appears to hang after login,avoid to wrap the StreamWriter into a PrintWriter and instead run an explicit flush() at the end:

Writer w = new OutputStreamWriter(s.getOutputStream());
 w.print(command+"rn");
 w.flush();

这可能实际上是您的代码的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读