Benim gereksinimim, bir java programı kullanarak telnet aracılığıyla bazı sunucuya bağlanmak ve birkaç komut çalıştırmak ve yanıtları okumaktır.commons-net kullanarak otomatik Telnet istemcisi
public class TelnetSample {
private TelnetClient telnet;
private InputStream in;
private PrintStream out;
public TelnetSample(String server, int port) {
try {
// Connect to the specified server
telnet = new TelnetClient();
telnet.connect(server, port);
in = telnet.getInputStream();
out = new PrintStream(telnet.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
public String readResponse() {
System.out.println("TelnetSample.readResponse()");
StringBuilder out = new StringBuilder();
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
out.append(line);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(out.toString());
System.out.println("==========================================================");
return out.toString();
}
public String read2() {
System.out.println("TelnetSample.read()");
StringBuffer sb = new StringBuffer();
try {
int available = in.available();
for (int index = 0; index < available; index++) {
char ch = (char) in.read();
System.out.print(ch);
sb.append(ch);
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
public String sendCommand(String command) {
try {
InputStream is = new ByteArrayInputStream(command.getBytes());
int ch;
while ((ch = is.read()) != -1) {
out.write(ch);
out.flush();
}
System.out.println(command);
String output = read2();
if (output.trim().isEmpty()) {
System.out.println("output empty");
} else {
System.out.println(output);
}
System.out.println("==========================================================");
return output;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public void disconnect() {
try {
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
try {
TelnetSample telnet = new TelnetSample("aspmx2.xxxxxx.com", 25);
telnet.readResponse();
telnet.sendCommand("Helo hi");
telnet.sendCommand("mail from:[email protected]");
telnet.sendCommand("rcpt to:[email protected]");
telnet.sendCommand("quit");
telnet.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
}
}
İşte birbirinden telnet bağlantısını meydana: Bu cevaplara dayanarak ben https://stackoverflow.com/a/1213188/1025328
ile strated bazı operasyon
Ben Commons-net kullanarak değilim ve benim program böyle bir şeydir gerçekleştirmek için gereken Yanıt, her diğer sendCommand
için boş bir yanıt alıyorum. Biri bana sorunun ne olabileceğini gösterir.
Benim çıkış Veri aslında döndürülür önce mümkün read2 giriş akımından geri boş değer elde mi bu
TelnetSample.readResponse()
220 mx.xxxxxx.com ESMTP o86si4086625pfi.217 - gsmtp
==========================================================
Helo hi
TelnetSample.read()
output empty
==========================================================
mail from:[email protected]
TelnetSample.read()
output empty
==========================================================
rcpt to:[email protected]
TelnetSample.read()
output empty
==========================================================
quit
TelnetSample.read()
output empty
==========================================================