Gmail に接続して、サーバーから受信トレイを取得しようとしています。Gmail に接続してアカウントにログインできます。それらをソケットに送信すると
output.println( "A01 lOGIN " + userName + " " + password );
output.flush();
ソケットから応答を取得できます。しかし、私が新しいものを送るとき:
output.println( "A02 SELECT INBOX");
JOptionPane.showMessageDialog( null,"Before Flush");
output.flush();
JOptionPane.showMessageDialog( null,"After Flush");
そのようなソケットからの応答を取得しようとします:
JOptionPane.showMessageDialog( null,in.nextLine());
JOptionPane.showMessageDialog( null,"After nextLine()");
メッセージ ダイアログは表示されず、約 5 分間待機します。5 分後、空のメッセージ ダイアログが表示されます (最後のメッセージは表示されません)。私はそれに対する解決策を見つけることができませんでした。誰が問題が何であるか知っていますか?
public static void main(String[] args) {
// open SSLSocket connection to server and send login
try {
// obtain SSLSocketFactory for creating SSLSockets
SSLSocketFactory socketFactory =
( SSLSocketFactory ) SSLSocketFactory.getDefault();
// create SSLSocket from factory
SSLSocket socket =
( SSLSocket ) socketFactory.createSocket(
"imap.gmail.com", 993 );
// create PrintWriter for sending login to server
PrintWriter output = new PrintWriter(
new OutputStreamWriter( socket.getOutputStream() ) );
Scanner in = null;
in = new Scanner(socket.getInputStream());
// display response to user
JOptionPane.showMessageDialog( null, in.nextLine());
// prompt user for user name
String userName = JOptionPane.showInputDialog( null,
"Enter User Name:" );
// prompt user for password
String password = JOptionPane.showInputDialog( null,
"Enter Password:" );
output.println( "A01 lOGIN " + userName + " " + password );
output.flush();
// display response to user
JOptionPane.showMessageDialog( null, in.nextLine());
JOptionPane.showMessageDialog( null, in.nextLine());
output.println( "A02 SELECT INBOX");
JOptionPane.showMessageDialog( null,"Before Flush");
output.flush();
JOptionPane.showMessageDialog( null,"After Flush");
/*
* It waits in nextLine() and it does not show anything
* Because of waiting, It does not show After nextLine() message Dialog
* But after 5 minutes, It shows a message dialog with null string
*/
JOptionPane.showMessageDialog( null,in.nextLine());
JOptionPane.showMessageDialog( null,"After nextLine()");
// clean up streams and SSLSocket
output.close();
in.close();
socket.close();
} // end try
// handle exception communicating with server
catch ( IOException ioException ) {
ioException.printStackTrace();
}
// exit application
finally {
System.exit( 0 );
}
}