問題タブ [socketchannel]
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 - NIO を使用するときに SocketChannel が実際に接続されていることを確認するにはどうすればよいですか?
AndroidでNIOクライアントプログラムに取り組んでいます。基本的にはうまく機能しますが、ネットワークが利用できない場合(WIFIが無効になっているなど)、ソケットが「実際に」接続されていることを区別する方法がわかりません.SocketChannel.finishConnect () は、利用可能なネットワークがなくても常に true を返します。接続されていない SocketChannel に書き込もうとすると、Broken pipe 例外が発生します。
では、SocketChannel が実際に接続されていることを確認するにはどうすればよいのでしょうか。
java - Java の SocketChannel.read(ByteBuffer)
Javaドキュメントでこれに対する答えが見つからないようです:
SocketChannel.read(ByteBuffer) は現在の ByteBuffer を追加または上書きしますか?
java - バイト数が定義されていない SocketChannel で TCP 経由でストリームを読み取る
バイト数を定義せずに SocketChannel でストリームを読み取ろうとしています。
私が考えた別の解決策は、事前定義されたサイズの異なる ByteBuffers をリストに格納することです。これにより、後で受信したサイズの新しい ByteBuffer を割り当てて、結果を中に入れることができます。
問題は、私がブロッキングモードにあり、読み取りメソッドで作成したループを終了する有効な条件が見つからないことです。コードを確認してください:
これを解決する方法について何か考えはありますか?
java - try 外部の try-with リソースのリソースを使用する
SocketChannel
サーバーとクライアントの間でメッセージを送信するために使用しています。クライアントがサーバーに接続すると、サーバーはtry-with-resources try でInputStreams
andを開き、次のようにクライアントからメッセージを受信し、クライアントにメッセージを送信します。OutputStream
out
トライ外にアクセスしたい。try には、メッセージが に到着したかどうかを繰り返しチェックする while ループが含まれておりin
、正常に動作します。
次のようにして、グローバル変数を設定しようとしましたglobal_out
。
そして、次のように、この OutputStream に書き込もうとしました。
sendMessage(Object)
私はwhen should_ceck
isのみを呼び出し、 istrue
かどうかをテストしますglobal_out
がnull
、そうではありません。ただし、sendMessage(Object)
一向に戻りません。そうglobal_out
でない 場合は、何かに設定されているに違いないのに、 が終了null
する前にリソースを使用できないのはなぜですか?try-with-resources
これを回避する方法はありますか?
java - HttpPost: InputDispatcher: "チャネルは修復不可能なほど壊れており、破棄されます!" Nexus 7 で
私の古いデバイスである LG Optimus 3d (Android 2.2) ではなく、Nexus 7 (4.3) で HttpPost を実行すると、次のようになります。
E/InputDispatcher﹕ チャネル '4273f7b0 ... MainActivity (server)' ~ チャネルは回復不能なほど壊れており、破棄されます!
人々はメモリリークの可能性について言及しています。見る **。ただし、この問題は、HttpPost を試すと、起動時にすぐに発生します。それでもメモリリークの可能性はありますか?
これが私がHttpPostをやっている方法です:
ここに私の HttpPostAsync タスクがあります:
何か案は?
SO answer* を読んだので、ArrayList の初期化に関係している可能性があるため、ArrayList で 1 を使用してこのように初期化しようとしましたが、問題は解決しません。
*: 完全に関連/助けにならなかった SO の回答: アプリは Android の動作を停止しました
**メモリリーク関連?http://android-developers.blogspot.com/2011/03/memory-analysis-for-android.html