0

Java (サーバー) で PrintWriter を使用して、ソケット経由でデータを送信します。

ジャワ

out = new PrintWriter(client.getOutputStream(), true);
out.println("p1");

次に、フラッシュ (クライアント) でこの値を取得すると:

フラッシュ AS3

line = socket.readUTFBytes(socket.bytesAvailable);

この if ステートメントは実行されません。

if (line == "p1") {

行をトレースすると、出力に p1 が表示されます (ただし、ブレークポイントを設定してデバッグで実行すると、行が "p1" ではなく "p1" に等しいと表示されます)。

4

3 に答える 3

2

おそらく

out.println("p1");

行区切りを追加します (プラットフォーム、構成などに応じて、改行やキャリッジ リターン)。デバッガーが値を次のように表示するのはそのためだと思います"p1(次の行に終了引用符が含まれるため)。私はあなたが欲しいと思う:

out.print("p1");

ライターを閉じるかフラッシュします (必要に応じて)。

文字列の等価性がFlashで実行されるというコメントに注意してください(.equals()コメントは適用されません)

于 2013-10-23T13:41:11.313 に答える
0

Java で String オブジェクトを比較するには、「==」演算子の代わりに .equals() メソッドを使用します

if (line == "p1") 

する必要があります

if (line.equals("p1")) 
于 2013-10-23T13:43:11.897 に答える