問題タブ [datainputstream]
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 - ソケットを使用してデータを送信したクライアントを特定する
私は問題があります。
私のコードには、サーバーへの「イン」と「アウト」を持つすべてのプレーヤーの配列があります。
サーバーからクライアントへ私は問題なくうまく通信でき、すべてのクライアントはサーバーから送信された変更をGUIに表示します。
問題は、クライアントからサーバーへの通信です。サーバーとして、私はすべてのプレイヤーからいくつかの仕事をするための請願を受け取りたいと思っています。問題は、どのインデックスから請願書を受け取ったかわからplayers[index].in.readUTF()
ず、プログラムをブロックするすべての原因を確認できないことです。
手助け?in.avaiable()
私にはうまくいきません。
それをより明確に示すために:
プレイヤーがサーバーにログインするとき、私はサーバー側でこれを行います。
次に、サーバー側にメッセージを待機しているスレッドがあります。
問題は、どのプレーヤーの配列のインデックスから(どのプレーヤーから)メッセージが来るのかわからないことです。サーバーに何も送信していないプレーヤーのインデックスを確認できません。サーバーがプログラムをブロックするためです。
それがどのように機能するかです:
サーバーからクライアントへ私はただします:
player[i].out.writeUTF(message)
サーバー側から- クライアントはそれを実行し
in.readUTF()
、すべてが正常に動作します
クライアントからサーバーへ私はします:
out.writeUTF(message)
クライアントから- しかし、サーバー側では、
player[i].in
どのプレーヤーかわからないものを読み取るために1つを選択する必要があります。
android - Bluetooth通信用のOutputStreamからDataOutputStreamへ
インターネットで見つけたチュートリアルの助けを借りて、Bluetooth デバイスに接続する Android 用アプリを既に作成しました。このアプリは、InputStream および OutputStream オブジェクトを使用して接続し、接続を確立しました。少量のデータを転送する必要があったため、バイトしか送信できなかったため、このソリューションは問題ありませんでした。
ここで、古いコードを変更して、DataInputStream と DataOutputStream を使用して複雑なデータを簡単に送信したいと考えています。InputStream と OutputStream の前にデータ識別子を追加するだけで元のコードを変更しようとしましたが、これによりコードにエラーが発生しました。エラーが発生しないように、DataInputStream と DataOutputStream を正しく使用する方法を誰かに説明してもらえますか。これは私の古いコードです:
そしてここで変更されたバージョン:
ご意見ありがとうございます。
java - DataInputStream と DataOutputStream の使用
DataInputStream を使用して、A から B にいくつかの文字列を送信したいと考えています。
これらを使用して送信する方法は知っています.write()
が、文字列を分離する最良の方法がわかりません。実際、調査の結果、文字列に文字を追加して B で分割しない限り、それは可能ではないようです。
を使用する代替手段DataInputStream
が検討されます。を作成して送信するつもりでしたArray
が、どうすればよいかわかりませんでした。
これまでのところ、私は持っています:
}
java - 2 つの DataInputStreams を開こうとすると Android アプリがハングする
画像をストリーミングするためにいずれかのストリームに切り替える機能を使用して、2 つの InputStreams を同時に開く必要があるこのアプリを作成しています。最初のストリームを開くことはできましたが、2 番目のストリームを開こうとするとハングします。以下はコードです。コードがハングする場所にコメントを作成しました。私が何か間違っているかどうか説明していただけますか?
java - バイト配列を DataInput および DataOutput Stream に読み書きする方法
Hbase は、Map reduce ジョブのソースおよびシンクとして機能します。(vector writable) という名前の書き込み可能なカスタム クラスを作成しました。このクラスには 2 つのフィールドがあります。
私のマッパーはこれを値として発行するため、vectorWritable クラスに書き込みメソッドと読み取りメソッドを実装しました。
入力ストリームから rowKey を読み取ろうとすると、NullPointerException が発生します。ただし、 readVector メソッドは正常に機能し、正しい値を取得しています。
出力ストリームで取得できるように、DataInput ストリームにバイト配列を書き込むにはどうすればよいですか
UPDATE : SOLVED これは正常に動作する私の rowKey メソッドの更新です。ありがとう@Perception
java - データ入力ストリーム
サーバー側にこのコードがあります:
サーバ側:
クライアント側:
そして、これを閉じると BufferedReader を開こうとすると、次の例外が発生します: outTransferToClient.close();
クライアント側のwhileループが止まらない場合..何か助けて????
java - Android / Java - DataInputStream を文字列に変換する
現在、いくつかのミドルウェアへの接続が確立されており、それを介して SQL クエリをデータベースに送信しています。
DataInputStream を使用可能な形式 (文字列であるかどうかにかかわらず) に変換する際に問題が発生しています。別の StackOverflow questionを見ましたが、使用して以来、これで問題は解決しませんでした
それが何を意味するにせよ、「非推奨」です。ミドルウェアからの応答を読み取ることができる必要があります。
android - 名前付きパイプの代わりに FileInputStream と File オブジェクトを使用する際の問題
FileStream をラップする DataStream を使用して、2 つの異なるアプリ間で大きなビットマップを送信しています (インテントには 1 MB の制限があり、ファイルをファイル システムに保存したくありません)。
私の問題は、ストリームがまだ開いているがデータがないときにDataInputStreamがスローしていることです。EOFException
私はこれが単にブロックされることを期待していました (ただし、ドキュメントはこの問題について非常に曖昧です)。
データ出力ストリーム:
データ入力ストリーム:
あるスレッドから別のスレッドにデータをストリーミングするためのより良いクラスのセットを提案できますか (ここで、read() / readInt() は正常にブロックされます)。
編集
私は単純に andを使って式からDataInputStream
andを取り除くことで、これを解決しようとしました:DataOutputStream
FileInputStream
FileOutputStream
与える:
Writing width: [0, 0, 2, -48], height: [0, 0, 5, 0], length: [0, 56, 64, 0]
反対側ではこれを使用します:
これにより、次のことが得られます。
そして奇妙なことに、read()
ブロックせず、ブロックせずに配列に値を入力せずに陽気に続行します(配列を { 9, 9, 9, 9 } に初期化しても、読んだ)。
狂っているとはこういうことか。