サービスでソケットを開き、一部のデータをサーバーに送信し、受信データをリッスンするアプリケーションをプログラミングしています。アンドロイドデバイスでインターネットとの接続が失われたときに問題が発生します。ここでインターネットに接続していないときにSocketExceptionが発生する
私は
java.net.SocketExceptionが取得する場所のコードスニペットです:のrecvfromに失敗しました:インターネット接続が失われたときETIMEDOUT(接続が をタイムアウトし)
try{
mSocket = new Socket("xxx.xxx.xxx.xxx", xxxxx);
out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream())), true);
BufferedReader in = new BufferedReader(new InputStreamReader(mSocket.getInputStream()));
String s;
while((s = in.readLine())!= null){ //here error of course
...
}
mSocket.close();
}catch(Exception e){
e.printStackTrace();
}
エラーがスローされますがBufferedReader
を試す readLine()
これを避ける方法と、なぜそれはもちろんですか?私は次のシナリオを行うにしようと試みまで
UPDATE
エラーが私を気にしませんでした: 1)を無線LANで実行ソケットは 2オン)また、モバイルデータ 3をオン)無線LAN
をオフにwifiがオフになっているときに、モバイルデータを介してインターネットに接続しているので、エラーなしでソケットで引き続きリッスンします。これは可能ですか?
インターネット接続が緩んでいませんか?あなたが接続していないときに、ある種の「例外」がスローされることは、このあいまいではありませんか?あなたは今のようにそれをキャッチして、ユーザーのための接続が切断されたことに関する情報を表示してください – snachmsm
(in.ready()){ s = in .readLine(); ... } –
投稿を更新しました。 –