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返回亂碼問題
終端類型不對應,或編碼不對應
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~