我希望同步读取所有数据,从客户端或服务器接收而不使用java中的readline()方法(如c中的readall()).
我不想使用下面的代码:
BufferedReader reader = new BufferedReader(new inputStreamReader(socket.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null)
document.append(line + "\n");
我应该用什么方法?
解决方法:
如果您知道传入数据的大小,可以使用以下方法:
public int read(char cbuf[], int off, int len) throws IOException;
其中cbuf是目标缓冲区.
否则,您将不得不读取行或读取字节.流不知道传入数据的大小.只能顺序读取直到达到结束(读取方法返回-1)
那样的:
public static String readAll(Socket socket) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
StringBuilder sb = new StringBuilder();
String line;
while ((line = reader.readLine()) != null)
sb.append(line).append("\n");
return sb.toString();
}
标签:java,sockets,asynchronous
来源: https://codeday.me/bug/20190831/1777867.html