通过网络发送带有新行的文本

时间:2013-03-21 07:24:54

标签: java networking client-server

我正在尝试使用Java在网络上发送带有新行的文本。例如:

  

“你好\ n这是一个新行”

这是我用于客户端的代码:

Socket kkSocket = null;
PrintWriter out = null;
BufferedReader in = null;

/*connect to server here*/

BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String fromServer;
String fromUser;

while ((fromServer = in.readLine()) != null) {
    System.out.print("Server: " + fromServer);
    if (fromServer.equals("Bye.")) {
        break;
    }

    fromUser = stdIn.readLine();
    if (fromUser != null) {
        System.out.print("Client: " + fromUser);
        out.println(fromUser);
    }
}

out.close();
in.close();
stdIn.close();
kkSocket.close();

以下是我用于服务器的代码:

/*Connect to server here*/
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String inputLine, outputLine;
Protocol kkp = new Protocol();

outputLine = kkp.processInput(null);
out.println(outputLine);

while ((inputLine = in.readLine()) != null) {
    outputLine = kkp.processInput(inputLine);
    out.println(outputLine);
    if (outputLine.equals("Bye.")) break;
}

但它只返回第一行。

有人能够指出我正确的方向,所以我可以使用新的线路吗?

1 个答案:

答案 0 :(得分:2)

首先要注意的是readLine()方法使用行终止符\n作为其中之一,这就是未包含剩余文本的原因,为此,您必须调用{{ 1}}方法再次。在您的情况下,我会使用readLine()方法读取read(char[] cbuf, int off, int len),如下所示:

而不是使用char[]使用readLine()阅读如下

read(char[] cbuf, int off, int len)