我在Java中有一个ServerSocket:
ServerSocket serverSocket = new ServerSocket(1000);
接受clientSocket:
Socket clientSocket;
clientSocket = serverSocket.accept();
到目前为止,我正在阅读这样的输入:
BufferedReader clientSocketInputStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
while ((inputLine = clientSocketInputStream.readLine()) != null){
String message = inputLine;
// Hack the computer connecting to this one after here
但是,如果发送的文字类似于
String stringToBeSent = "Hello\nHowareyou";
然后我遇到了麻烦。因为我需要这样的文本。 2个不同的字符串不帮助我。
我怎么能按原样阅读?
感谢。
答案 0 :(得分:2)
您可以简单地逐字逐句阅读。 http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#read()
而不是读取行。
答案 1 :(得分:2)
两个选项:
将多个字符串重新组合在一起。
StringBuilder sb = new StringBuilder()
while ((inputLine = clientSocketInputStream.readLine()) != null)
{
String message = inputLine;
sb.append(message);
sb.append('\n');
}
String message = sb.toString();
使用BufferedInputStream
而不是BufferedReader
读取字节数组而不是字符串。然后使用有效的字符集将整个字节数组粉碎到String构造函数中。这将要求您知道String将包含多少字节。
答案 2 :(得分:1)
BufferedReader读取字符,直到它变为“\ n”,“\ r”或“\ r \ n”。你可以逐个字符地阅读,但它不会改变任何东西,因为你如何确定哪个新的线路特征显示真正的新线?