問題タブ [socket-timeout-exception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Javaの複数のスレッドでソケットタイムアウトが尊重されませんか?
4 つのスレッドを生成する Java プログラムがあります。各スレッドには、複数のソケット タイムアウトがあります。ただし、これらのタイムアウトは考慮されていないようです。つまり、readLine()
機能が長時間ブロックされる可能性があります。
次の動作が必要です: ソケットのタイムアウトを 300 ミリ秒に設定した場合、関数(つまり、基になる選択呼び出し) が呼び出されてreadLine()
から 300 ミリ秒以内に戻るようにします。readLine()
プロセッサの共有中に OS スケジューラがスレッドをスリープ状態にすることは理解していますが、この動作を保証するためにスレッドを常に強制的に起動する方法は Java にあるのでしょうか? それとも、これはマルチスレッド プログラミングを行う際の正しい考え方ではないのでしょうか?
理想的には、4 つのスレッドを生成して 6 コアのマシンで実行しているため、各スレッドは独自の CPU を取得して並行して実行し、選択タイムアウトを尊重する必要があります ... しかし、それはおそらく期待しすぎです.. .
PS: 実際には Thread.interrupt() を使用して、各スレッドが特定の時間内に終了するようにします (マスター スレッドで経過した時間をチェックし、長すぎる場合は子スレッドを中断します)。各スレッドで、(異なる) サーバーに接続し、要求を作成して、応答を待ちます。返事がいつまで続くかわかりません。readLine()
そのため、 でタイムアウトするまでメソッドを呼び出し続けSocketTimeoutException
ます。サーバーがこの時間内に応答を開始すると予想されるため、300 ミリ秒のタイムアウトを適用します。このタイムアウトを強制する理由は、サーバーがブロードキャスト方式で動作し、単一のクライアントによる要求に対する応答をすべてのクライアントに送信するためです。したがって、タイムアウトがなければ、他のクライアントからのリクエストに応じてデータを取得し続けます。
java - SocketTimeoutExceptionをデバッグする方法は?
クライアントAがjava.net.SocketTimeoutException
サーバーBに接続すると、サーバーBでオンになります。理由はわかりません。クライアントはサーバーにデータを送信しており、サーバーはこの例外をスローします。この問題をどのようにトラブルシューティングしますか?
現在、これは1回だけ発生していることに注意してください。これが再現可能かどうかはわかりません。テストを再度セットアップしようとしています。
java - データグラム ソケットの setSotimeout
サーバーは、エコー サーバーのように機能します。クライアントはサーバーに 10 個のパケットを送信します (1 秒のギャップ)
クライアントがサーバーからパケットを受信すると、パケットが失われることがあります。
そのため、クライアントはパケットが到着するまで最大 1 秒待つ必要があります。パケットが 1 秒以内に到着しない場合、クライアントは他のパケットの送信を続行する必要があります。
これを達成するために .setSoTimeout をどのように使用しますか?
コード:
}
java - アプリをしばらく実行すると SocketTimeoutException がノンストップで発生するが、アプリを再起動することで即座に解決する
一部のHTTPサーバーに接続し、ページのHTMLコンテンツをダウンロードしてから、他のHTTPサーバーに移動するクローラーJavaアプリケーションがあります。このタスクでは、Apache HTTP ライブラリを使用しました。
実行の最初の数時間は、かなりスムーズに動作しているように見えます (接続関連の例外がときどきスローされますが、これは想定内です)。それでもしばらくすると、送信するすべてのリクエストで SocketTimeoutException が発生し続けるようです。例外は HttpClient クラスの "execute" メソッドでは発生しませんが、Entity のコンテンツ (HttpResponse オブジェクトから取得) を取得しようとしたとき、またはそのコンテンツをファイルに書き込もうとしたときに発生します。
次に、アプリケーションを停止して最初からやり直すと、正常に動作するように戻ったように見えます-停止した場所から再開したにもかかわらず、対話しようとしたときに SocketTimeoutException を受け取ったのと同じサーバーと対話していることを意味します前と。
不足している可能性があり、このライブラリを使用するときに不可欠である可能性のあるあらゆる種類のクリーンアップを探してみましたが、何も見つかりませんでした.
どんな助けでも大歓迎です。ありがとう。
java - チャネル メッセージを送信するサービスへの URLFetch を使用した SocketTimeoutException
2 つの AppEngine (Java) アプリがあります。1 つは URLFetch を使用して、もう 1 つは予定を作成します。受信側では、Channel API を使用して開いているチャネルがあるかどうかを確認し、新しいデータについて通知する機能を追加しました。
URLFetch 呼び出しが SocketTimeoutException で失敗しています。レシーバー内のすべてのコードが実行されます (通知されるすべてのオープン チャネルを含む) が、呼び出し元のアプリは引き続き SocketTimeoutException を取得します。チャンネル通知行をコメントアウトすると、エラーは発生しません。
これは、開発モードではなく、デプロイされたアプリでのみ発生します。また、呼び出しは、URLFetch で許可されている 60 秒 (または以前の 10 秒) のタイムアウトに達しません。
android - SocketTimeoutException は待っていましたが、スローされませんでしたか?
サーバーからデータを受信する Android アプリを作成しています。理論的にはインターネット接続が存在しない可能性があるため、SocketTimeoutException をキャッチしてエラー メッセージや再試行画面などを表示することで、このケースをキャッチしようとします。残念ながら、この例外はスローされません。少なくとも、catch 句にはジャンプしません。私は何を間違っていますか?
osgi - 分散 OSGi: 読み取りタイムアウト
分散 OSGi と Zookeeper を使用して分散アプリケーションを構築しています。アプリケーションは、Felix と Equinox で実行する必要があります。を使用してサービスを JAX-WS Web サービスとして登録BundleContext.registerService(...)
し、ServiceTracker<S,T>
. したがって、すべてのサービス処理は OSGi フレームワークによって行われます。各サービス呼び出しはいくつかの計算を行うため、呼び出し元に応答するまでに時間がかかります。
問題はjava.net.SocketTimeoutException: Read timed out
、サービス呼び出しに 60 秒以上かかると例外が発生することです。そのため、デフォルトのタイムアウトは 60 秒に設定されているようです。OSGi フレームワークで使用されるタイムアウトを構成する方法を知っている人はいますか?
これは完全なスタック トレースです。
android - phonegap: webviewclient の呼び出し中にタイムアウト エラーが発生しました
phonegap アプリをデバッグしようとしています。エミュレーターでアプリを開こうとすると、次のエラーが表示されますThe connection to the server was unsuccessful. (file:///android_asset/www/index.html)
phonegap ビルドを使用しているため、ネイティブ コードはありません。奇妙なことに、ローカル リソースしかロードしていないため、タイムアウトが発生する理由がわかりません。私の index.html は次のようになります。
java - Android 3 タブレットでの予期しない SocketTimeoutException
を使用してURLからデータを読み取るアプリケーションがあります
タイムアウトは 60000 です。ソースは 15 秒ごとにデータを返すため、タイムアウトはありません。しかし、URL 接続を開いた 2:19 後にjava.net.SocketException: Connection timed outがスローされます。これをHuawai Mediapad 7でテストしました。一部の Android 2 デバイス、携帯電話、およびタブレットでは、同じコードが適切に機能します。
誰かがすでにこの問題に遭遇していますか、それともこのデバイス固有のものですか?
編集:(データが受信され、実際のタイムアウトが原因ではないことを明確にします。)データが15秒ごとに受信されることをログに記録しました。一時停止も、接続の切断もありません。例外は、最後のデータが受信されてから 4 秒後にスローされます。
java - httpURLConnection.getOutputStream() の readTimeout?
テスト用に 500 ミリ秒に設定していHttpURLConnection
ます。readTimeout
私の理解に基づいてreadTimeout
、応答を待機する最大許容時間です。ただし、アプリケーションを実行すると、で例外がスローされgetOutputStream
ます。Exception
どうやら が原因readTimeout
らしい。
readTimeout
で発生したのはなぜgetOutputStream
ですか? getOutputStream
データの送信のみを目的としているため、応答を待つ必要はありません。また、応答を待つ必要がないため、readTimeout
発生することはありません。最初は、応答が受信/読み取られている場所であるため、でreadTimeout
発生すると思っていました。と がどのように機能getInputStream
するか説明できますか?readTimeout
connectTimeout
また、 の前後にタイマーを配置すると、getOutputStream
呼び出し後のタイマーの値getOutputStream
はわずか 200+ ミリ秒です。私のreadTimeout
は500ミリ秒です。getOutputStream
my の 500 ミリ秒の値よりも早くタイムアウトしたのはなぜreadTimeout
ですか? connectTimeout
myは 0 または無限に設定されていることに注意してください。