0

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 );
    }
}
4

0 に答える 0