javatelnet
Ⅰ 如何用java实现telnet的登录及实现命令
参考一下代码:
用telnet是这样:telnet time-A.timefreq.bldrdoc.gov 13
用socket是这样:
1. import java.io.*;
2. import java.net.*;
3.
4. /**
5. This program makes a socket connection to the atomic clock
6. in Boulder, Colorado, and prints the time that the
7. server sends.
8. */
9. public class SocketTest
10. {
11. public static void main(String[] args)
12. {
13. try
14. {
15. Socket s = new Socket("time-A.timefreq.bldrdoc.gov",
16. 13);
17.
18. BufferedReader in = new BufferedReader
19. (new InputStreamReader(s.getInputStream()));
20. boolean more = true;
21. while (more)
22. {
23. String line = in.readLine();
24. if (line == null)
25. more = false;
26. else
27. System.out.println(line);
28. }
29.
30. }
31. catch (IOException e)
32. {
33. e.printStackTrace();
34. }
35. }
36. }
Ⅱ java实现telnet 如何发送 y/n
参考一下代码:
用telnet是这样:telnet time-A.timefreq.bldrdoc.gov 13
用socket是这样:
1.importjava.io.*;
2.importjava.net.*;
3.
4./**
5.
6.inBoulder,Colorado,andprintsthetimethatthe
7.serversends.
8.*/
9.publicclassSocketTest
10.{
11.publicstaticvoidmain(String[]args)
12.{
13.try
14.{
15.Sockets=newSocket("time-A.timefreq.bldrdoc.gov",
16.13);
17.
18.BufferedReaderin=newBufferedReader
19.(newInputStreamReader(s.getInputStream()));
20.booleanmore=true;
21.while(more)
22.{
23.Stringline=in.readLine();
24.if(line==null)
25.more=false;
26.else
27.System.out.println(line);
28.}
29.
30.}
31.catch(IOExceptione)
32.{
33.e.printStackTrace();
34.}
35.}
36.}
Ⅲ java使用telnet连接远程服务器调用cmd命令时 报堆溢出错误是什么原因
如果执行一次没问题,执行多次后,出现内存溢出,检查代码,查看流是否都已经关闭,没有疏漏。
如果程序启动后,第一次执行就出现内存溢出错误,设置你的ide,调高分配内存。
Ⅳ java实现telnet连接操作,打包到服务器后访问报null
java">下面是我自己写的一个读取并显示txt文件的demo,希望对您有帮助。publicclassClient{publicstaticvoidmain(String[]args){ClientFramef=newClientFrame();}}importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.Dimension;importjava.awt.GridLayout;importjava.awt.Toolkit;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.IOException;importjava.net.Socket;importjava.net.UnknownHostException;importjava.util.Vector;importjavax.swing.BorderFactory;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JList;importjavax.swing.JScrollPane;importjavax.swing.JTextArea;importjavax.swing.event.ListSelectionEvent;importjavax.swing.event.ListSelectionListener;,ListSelectionListener{privateJListlist=null;privateJButtonsbtn=null;privateJButtoncbtn=null;privateVectorv=null;privateJTextAreatxt=null;privateContainercontrol=null;privateContainerbtn=null;privateSocketclient=null;privateDataInputStreamreader=null;privateDataOutputStreamwriter=null;publicClientFrame(){this.list=newJList();this.list.setBorder(BorderFactory.createTitledBorder("文件列表"));this.list.addListSelectionListener(this);this.sbtn=newJButton("显示");this.sbtn.addActionListener(this);this.cbtn=newJButton("清除");this.cbtn.addActionListener(this);this.control=newContainer();this.control.setPreferredSize(newDimension(150,400));this.control.setLayout(newBorderLayout());this.control.add(newJScrollPane(this.list),BorderLayout.CENTER);this.btn=newContainer();this.btn.setLayout(newGridLayout(1,2));btn.add(sbtn);btn.add(cbtn);this.control.add(this.btn,BorderLayout.SOUTH);this.txt=newJTextArea();this.txt.setEditable(false);this.txt.setSize(350,400);this.setTitle("客户端");this.setSize(500,400);this.setVisible(true);DimensiondisplaySize=Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((displaySize.width-this.getWidth())/2,(displaySize.height-this.getHeight())/2);this.setLayout(newBorderLayout());this.add(this.control,BorderLayout.WEST);this.add(newJScrollPane(this.txt),BorderLayout.CENTER);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);try{//this.client=newSocket("192.168.32.34",6666);this.client=newSocket("192.168.1.100",6666);this.reader=newDataInputStream(client.getInputStream());this.writer=newDataOutputStream(client.getOutputStream());}catch(UnknownHostExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}}publicvoidactionPerformed(ActionEventevent){if(event.getSource()==sbtn){if(v==null){v=newVector();}else{v.clear();}try{writer.writeUTF("getfilelist");writer.flush();Stringt=reader.readUTF();while(t!=null&&!t.equals("")){v.add(t);t=reader.readUTF();}}catch(UnknownHostExceptione){e.printStackTrace();}catch(IOExceptione){e.printStackTrace();}this.list.setListData(v);}if(event.getSource()==cbtn){this.txt.setText("");}}publicvoidvalueChanged(ListSelectionEvente){inti=this.list.getSelectedIndex();if(!this.list.getValueIsAdjusting()&&i!=-1){try{writer.writeUTF("getfilecontent_"+i);writer.flush();Stringtmp=reader.readUTF();this.txt.setText(tmp);}catch(IOExceptione1){e1.printStackTrace();}}}}importjava.io.DataInputStream;importjava.io.DataOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.io.InputStreamReader;importjava.io.Reader;importjava.net.ServerSocket;importjava.net.Socket;importjava.util.ArrayList;importjava.util.Iterator;publicclassServer{staticArrayListfileArray=newArrayList();publicstaticvoidmain(Stringargs[]){ServerSocketserver=null;Socketclient=null;Stringcmd="";try{server=newServerSocket(6666);client=server.accept();DataInputStreamreader=newDataInputStream(client.getInputStream());DataOutputStreamwriter=newDataOutputStream(client.getOutputStream());while(true){cmd=reader.readUTF();System.out.println(cmd);if(cmd.equals("getfilelist")){fileArray.clear();//fileArray=getFile(newFile("D:/tmp"));fileArray=getFile(newFile("D:/学习/教程/学习笔记"));Stringfn="";for(intk=0;kgetFile(Filef){File[]ff=f.listFiles();for(Filechild:ff){if(child.isDirectory()){getFile(child);}else{fileArray.add(child);}}returnfileArray;}}
Ⅳ java远程进行telnet ftp ssh连接的方法
文件传输协议(File Transfer Protocol, FTP)FTP是用于在网络上进行文件传输的一套标准协议。 它属于网络协议组的应用层。 FTP是一个8位的客户端-服务器协议, 能操作任何类型的文件而不需要进一步处理, 就像MIME或Unencode一样。但是, FTP有着极高的延时,这意味着, 从开始请求到第一次接收需求数据之间的时间会非常长, 并且不时的必需执行一些冗长的登陆进程。 概述 FTP服务一般运行在20和21两个端口。 端口20用于在客户端和服务器之间传输数据流, 而端口21用于传输控制流,并且是命令通向ftp服务器的进口。 当数据通过数据流传输时,控制流处于空闲状态。 而当控制流空闲很长时间后,客户端的防火墙会将其会话置为超时, 这样当大量数据通过防火墙时,会产生一些问题。此时, 虽然文件可以成功的传输,但因为控制会话会被防火墙断开, 传输会产生一些错误。 FTP实现的目标: 促进文件的共享(计算机程序或数据) 鼓励间接或者隐式的使用远程计算机 向用户屏蔽不同主机中各种文件存储系统的细节 可靠和高效的传输数据 缺点: 密码和文件内容都使用明文传输,可能产生不希望发生的窃听。 因为必需开放一个随机的端口以建立连接,当防火墙存在时, 客户端很难过滤处于主动模式下的FTP流量。 这个问题通过使用被动模式的FTP得到了很大解决。 服务器可能会被告知连接一个第三方计算机的保留端口。 FTP虽然可以被终端用户直接使用, 但是它是设计成被FTP客户端程序所控制。 运行FTP服务的许多站点都开放匿名服务,在这种设置下, 用户不需要帐号就可以登录服务器,默认情况下, 匿名用户的用户名是:“anonymous”。 这个帐号不需要密码, 虽然通常要求输入用户的邮件地址作为认证密码, 但这只是一些细节或者此邮件地址根本不被确定, 而是依赖于FTP服务器的配置情况。 [编辑] 主动和被动模式 FTP有两种使用模式:主动和被动。 主动模式要求客户端和服务器端同时打开并且监听一个端口以建立连 接。在这种情况下,客户端由于安装了防火墙会产生一些问题。 所以,创立了被动模式。 被动模式只要求服务器端产生一个监听相应端口的进程, 这样就可以绕过客户端安装了防火墙的问题。 一个主动模式的FTP连接建立要遵循以下步骤: 客户端打开一个随机的端口(端口号大于1024,在这里, 我们称它为x), 同时一个FTP进程连接至服务器的21号命令端口。此时, 源端口为随机端口x,在客户端,远程端口为21,在服务器。 客户端开始监听端口(x+1),同时向服务器发送一个端口命令( 通过服务器的21号命令端口), 此命令告诉服务器客户端正在监听的端口号并且已准备好从此端口接 收数据。这个端口就是我们所知的数据端口。 服务器打开20号源端口并且建立和客户端数据端口的连接。此时, 源端口为20,远程数据端口为(x+1)。 客户端通过本地的数据端口建立一个和服务器20号端口的连接, 然后向服务器发送一个应答,告诉服务器它已经建立好了一个连接。 [编辑] FTP和网页浏览器 大多数最新的网页浏览器和文件管理器都能和FTP服务器建立连接 。这使得在FTP上通过一个接口就可以操控远程文件, 如同操控本地文件一样。 这个功能通过给定一个FTP的URL实现,形如ftp://< 服务器地址>(例如, ftp://ftp.gimp.org )。是否提供密码是可选择的,如果有密码,则形如ftp://< login>:<password>@< ftpserveraddress>。 大部分网页浏览器要求使用被动FTP模式, 然而并不是所有的FTP服务器都支持被动模式。
Ⅵ java代码访问telnet,并受到返回值
import java.io.InputStream;
import java.io.PrintStream;
import org.apache.commons.net.telnet.TelnetClient;
public class Shell {
private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private char prompt = '$';// 普通用户结束
public Shell(String ip, int port, String user, String password) {
try {
telnet.connect(ip, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
// 根据root用户设置结束符
this.prompt = user.equals("root") ? '#' : '>';
login(user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 登录
*
* @param user
* @param password
*/
public void login(String user, String password) {
// read()Until("login:");
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(prompt + "");
}
/**
* 读取分析结果
*
* @param pattern
* @return
*/
public String readUntil(String pattern) {
try {
char lastChar = pattern.charAt(pattern.length() - 1);
StringBuffer sb = new StringBuffer();
char ch = (char) in.read();
while (true) {
sb.append(ch);
if (ch == lastChar) {
if (sb.toString().endsWith(pattern)) {
return sb.toString();
}
}
ch = (char) in.read();
System.out.print(ch);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 写操作
*
* @param value
*/
public void write(String value) {
try {
out.println(value);
out.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 向目标发送命令字符串
*
* @param command
* @return
*/
public String sendCommand(String command) {
try {
write(command);
return readUntil(prompt + "");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 关闭连接
*/
public void disconnect() {
try {
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// TelnetClient telnet = new TelnetClient();
try {
Shell she = new Shell("192.168.1.10", 23, "root", "123456");
System.out.println(she);
//执行的命令
System.out.println(she.sendCommand("ll"));
she.disconnect();
} catch (Exception e) {
// TODO: handle exception
}
}
}
Ⅶ java telnet返回乱码问题
终端类型不对应,或编码不对应
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~