1
s = new Socket(InetAddress.getByName(address), port);
Thread.sleep(250);
DataOutputStream outToServer = new DataOutputStream(s.getOutputStream());       
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(s.getInputStream()));

outToServer.writeBytes("MY_QUERY");

String rs = inFromServer.readLine();

s.close();

何も起こりませんが、.read() を使用すると、文字列の最初の文字を受け取ります。

受信するメッセージの長さがわかりません。Python で使用するのは sock.recv(1024) です。ここで、1024 は受信できる最大の長さです。

Javaで同じことを行う方法はありますか?

4

2 に答える 2

0

readLine() の javadoc によると:

1 行のテキストを読み取ります。行は、ライン フィード ('\n')、キャリッジ リターン ('\r')、またはキャリッジ リターンの直後のラインフィードのいずれかによって終了すると見なされます。

String の構造が正しいことを確認してください。

于 2013-05-18T23:10:45.043 に答える
0

あなたは行を読んでいますが、行を書いていません。writeBytes() は、指定した内容を正確に書き込みます。それ以上でもそれ以下でもなく、改行もありません。

また、両方を混在させるのではなく、2 つのストリームまたはリーダーとライターのいずれかを使用する必要があります。

于 2013-05-19T00:36:07.930 に答える