我正在使用 x11vnc,我想为它开发简单的客户端。所以,工作是:
- 从套接字接收信息
- 发送信息
- 接收下一个数据
- 发送另一个信息
等等。
因此,例如,我正在使用下一个简单的代码:
LineNumberReader lnr = new LineNumberReader(new InputStreamReader(socket.getInputStream()));
String test = null;
try {
test = lnr.readLine();
System.out.println(test);
test = lnr.readLine();
System.out.println(test);
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
System.exit(0);
我收到的来自服务器的第一条消息没有错误(第一个 readLine)。下一条消息是空的(或者没有任何用于 readLine 的行终止符)并且我有无限循环。lnr.ready() 不适合我。
那么,当来自套接字的数据有时没有“\n”、“\r”、“\r\n”或者套接字缓冲区为空时,如何从套接字读取?