web-dev-qa-db-ja.com

java.net.SocketException:recvfromが失敗しました:ECONNRESET(ピアによる接続のリセット)が何度か発生しています

私はこの例外をたくさん検索しましたが、めったに発生しませんが、問題を解決できる関連する答えは見つかりませんでした。HttpURLConnectionを使用してURLからxmlとして応答を取得しています。正常に機能します。しかし時々私はこの例外を受け取ります:
Java.net.SocketException: recvfrom failed: ECONNRESET (Connection reset by peer)、次のコードを使用しました。url1はxmlを提供するURLです。

url=new URL(url1);
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setDoInput(true);  
urlConnection.connect();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String result, line = reader.readLine();
result = line;
           while((line=reader.readLine())!=null)
                       {
               result+=line;
           }

           System.out.println("Result: "+result);
8
OM Yadav

Put urlConnection.setRequestProperty( "connection"、 "close");を試してください。接続する前に。これにより、デフォルトでオンになっているキープアライブプロパティが無効になります

10
stuckedoverflow

サーバーと通信しようとしたときにも同様の問題が発生しました。何が起こったのかはまだわかりませんが、問題を解決するために検索で this が見つかりました:

わかりました、答えはそれがサーバーのせいであるということでした-それは各要求の後に接続を閉じなければなりませんでした。 Androidは接続のプールを保持し、古い接続またはそのようなものを使用している可能性があります。とにかく、今では機能します。

この投稿を読んだ後、サーバーで実行されているApacheインスタンスを強制終了し、接続が拒否されたことを電話に確認させ、Apacheを再起動しました。その後、問題は解消されました。お役に立てれば!

2
Dylan Knowles

私の場合、httpからhttpsに変更し、すべてが正常になりました

0
Marriage