我想通過telnet與Windows服務器中的應用程序進行交互,因此我使用TelnetClient()方法。我可以使用System.in.read()交互(發送命令和檢索結果),但是我想要的是這個程序自動運行而不使用任何鍵盤輸入。所以,我的問題是,爲什麼System.in.read()工作,但ByteArrayInputStream不?爲什麼ByteArrayInputStream不會返回預期的結果?
這是我到目前爲止的代碼:
public class telnetExample2 implements Runnable, TelnetNotificationHandler{
static TelnetClient tc = null;
public static void main (String args[]) throws IOException, InterruptedException{
tc = new TelnetClient();
while (true){
try{
tc.connect("192.168.1.13", 8999);
}
catch (SocketException ex){
Logger.getLogger(telnetExample2.class.getName()).log(Level.SEVERE, null,ex);
}
Thread reader = mew Thread(new telnetExample2());
tc.registerNotifHandler(new telnetExample2());
String command = "getversion"; //this is the command i would like to write
OutputStream os = tc.getOutputStream();
InputStream is = new ByteArrayInputStream(command.getBytes("UTF-8")); //i'm using UTF-8 charset encoding here
byte[] buff = new byte[1024];
int ret_read = 0;
do{
ret_read = is.read(buff);
os.write(buff, 0, 10)
os.flush();
while(ret_read>=0);
}
}
public void run(){
InputStream instr = tc.getInputStream();
try{
byte[] buff = new byte[1024];
int ret_read = 0;
do{
ret_read = instr.read(buff);
if(ret_read >0){
System.out.print(new String(nuff, 0, ret_read));
}
while(ret_read>=0);}
catch(Exception e){
System.err.println("Exception while reading socket:" + e.getMessage());
}
}
public void receiveNegotiation(int i, int ii){
throw new UnsupportedOperationException("Not supported");
}
}
在將命令複製到輸出流的代碼中,存在邏輯錯誤。 os.write(buff,0,10)必須是os.write(buff,0,ret_read) –
你還沒有說你在觀察什麼。請閱讀http://tinyurl.com/so-hints –