0

チャットサーバーからデータを読み取るメソッドを初めて作成したとき、それはフリーズしました。ポート番号が間違っていて、new BufferedReader(new InputStreamReader(conn.getInputStream()))でフリーズしていることがわかりました。

プログラムがネットワークエラーでフリーズしないようにタイムアウトする方法はありますか?私は、完全な方法があるに違いないと思います

void SendMessage()
        {
            try {


            URL url = new URL("http://50.63.66.138:1044/update");
               System.out.println("make connection");
               URLConnection conn = url.openConnection();
               conn.setDoOutput(true);
               BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));


            //   String line;
               String f=new String("");
               String line=new String();
               while ((line= rd.readLine()  ) != null) {
                 f=f+line;
                 f+="\n";
               }
               mUsers.setText(f);

        } catch (Exception e) {

               System.out.println("exception");
               System.out.println(e.getMessage());
           }

        }
}
4

1 に答える 1

0

まず、接続が確立されている間でもUIスレッドがタッチで応答するようにするために、このコードを別のスレッドで実行することをお勧めします。次に、URLConnectionクラスで使用できるタイムアウトメソッドは2つあります。http://developer.android.com/reference/java/net/URLConnection.html#setReadTimeout( inthttp://developer.android.com/reference/java/ net / URLConnection.html#setConnectTimeout(int

これらの人と遊んでみてください、多分それは助けになるでしょう。そうでない場合は、いつでも独自の方法で実行できます。接続とInputReaderを確立しようとするランナブルでスレッドを開始します。次に、タイムアウトを待って、スレッドがまだ実行されている場合は、スレッドを中断してみてください。

于 2012-06-20T00:46:39.903 に答える