1

使用ServerSocketBufferedReader.readLine()输入仅在客户端终止线路后才读取,无论如何都要读取输入,并在线路终止之前发送输出?

ServerSocket SRVSOCK = new ServerSocket(35553);
while(true){
    Socket SOCK = SRVSOCK.accept();
    InputStreamReader IR = new InputStreamReader(SOCK.getInputStream());
    BufferedReader BR = new BufferedReader(IR);

    String MESSAGE = BR.readLine();

    PrintStream PS = new PrintStream(SOCK.getOutputStream());
    System.out.println(MESSAGE);
    PS.print("Returned Successfully");
}
4

2 回答 2

0

您可以使用bufferedReader.read()which 一次返回一个字符的值

StringBuffer response = "";    

while ((c = bufferedReader.read()) != -1) 
{
        //Since c is an integer, cast it to a char. If it isn't -1, it will be in the correct range of char.
        response.append( (char)c ) ;  
}

如果您使用此方法,则由您决定何时可以开始解析结果并发送回复。

于 2013-03-19T11:05:23.143 回答
0

看看这个答案。

您可以将输入读入大小由您控制的缓冲区。

(如果链接到自己的答案被认为是不好的,请道歉。感觉就像重用它。毕竟我们是开发人员。)

于 2013-03-19T11:18:32.393 回答