【发布时间】:2019-10-17 18:15:30
【问题描述】:
我正在使用一个套接字,我正在接收来自服务器的响应,该响应是一个字符串。
readline() 方法不断循环,因为我的响应在每个响应的末尾都没有/n 或/r。所以我的程序卡在了那一行。
我如何接收响应,换句话说,如何告诉readline() 方法传输结束而没有/n 或/r 在响应末尾?
我不能使用 read() 方法,因为它返回一个 int。这是接收代码
// Get the return message from the server
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
// lecture de message
String message = br.readLine();
and this is the response that iam suposed to get "162143045875965485214752310109013112500019900008080807812345612345678912500007412589600000000000000000000000000000000000000000000000000000000000000000000000000000000"
【问题讨论】:
-
你用什么从套接字读取? BufferedReader?
-
Java SE 中没有“readlines()”方法。如果您真的是指
readline(),那么有多种方法具有该名称。如果需要帮助,您需要提供更多背景信息。 -
由于
Socket没有readLine()方法,我假设您使用的是BufferedReader或类似的方法。由于您无法影响该类将使用什么“行”分隔符,因此您要么必须使用另一个阅读器,要么自己动手。除此之外,您的消息的分隔符是什么?接收方如何检测到消息的结束? -
@Thomas - "一行被认为是由换行符('\n')、回车符('\r')、回车符中的任何一个终止立即通过换行或到达文件结尾 (EOF)。"。唯一的解释是 OP 正在尝试使用
readline()阅读,而他的“消息”根本不是面向行的。我们需要先看看他的代码,然后才能给他建议。