3

私は古い学校を使用していますjava.net.Socket

私のクライアントはサーバーに接続し、次のことを行います。

BufferedReader in =
   new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String fromServer = in.readLine();

in.readLine()でハングします。

私のサーバーはクライアントからの接続を受け入れ、次のことを行います。

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.print("Hello client\n");

私の期待は、out.print( "Hello client \ n"); が呼び出された場合、クライアントはブロックを停止して続行する必要があります。

私は何が間違っているのですか?

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in =
   new BufferedReader( new InputStreamReader(clientSocket.getInputStream()));
String fromServer = in.readLine();
4

2 に答える 2

3

私はあなたが呼んでいないと思いますPrintWriter.flushout.flush();を参照してください

Javadocから

autoFlush-ブール値; trueの場合、println、printf、またはformatメソッドは出力バッファーをフラッシュします

だからあなたAutoflushのために働くことはありませんあなたは手動printで電話する必要がありますflush()

于 2012-10-23T21:13:06.990 に答える
2

自動フラッシュされていないを呼び出すout.print("Hello client\n")必要があるときに、自動フラッシュされていないを呼び出してout.println("Hello client")います。

于 2012-10-24T03:26:13.543 に答える