我試圖發送一個命令,並通過套接字連接執行它。我需要閱讀每條響應行,然後繼續向相同的進程發送命令。下面我有處理的方法。通過套接字連接發送多個命令的問題
當前,我最初打開套接字連接時收到一個響應,但之後程序一直掛起,直到外部主機關閉連接,大概是因爲在指定的時間內未輸入任何輸入。
public static void main(String[] args) {
try {
sendSmtpTest("[email protected]");
} catch (Exception e) {
e.printStackTrace();
}
}
public static boolean sendSmtpTest(String address) throws Exception {
Socket socket = new Socket("a.random.address", 0000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
int res;
System.out.println("1");
System.out.println(in.readLine());
System.out.println("2");
System.out.println(in.readLine());
say(out, "HELO netatlantic.com");
System.out.println("3");
System.out.println(in.readLine());
System.out.println("4");
System.out.println(in.readLine());
say(out, "MAIL FROM: <[email protected]>");
System.out.println("5");
System.out.println(in.readLine());
say(out, "RCTP TO: <" + address + ">");
System.out.println("6");
System.out.println(in.readLine());
say(out, "RSET");
System.out.println("7");
say(out, "QUIT");
// clean up
in.close();
in.close();
out.close();
return true;
}
private static void say(BufferedWriter wr, String text) throws IOException {
wr.write((text + "\r\n"));
wr.newLine();
wr.flush();
}
隨機打印數字是我知道程序在哪裏的一種方式。另外,我必須從服務器上運行它,因此我無法在調試器中運行它,因爲我要連接的套接字只接受來自特定地址的連接。 謝謝!
您可以運行遠程調試器。 – erickson