Java nextLine 在套接字上阻塞

Java nextLine blocked on socket

我正在使用一个服务器和一个客户端,其中服务器发送一个字符串,其中包含未知数量的 \n。 例如:

foo1 \n foo2 \n foo3

foo1 \n foo2

在客户端,由于套接字的阻塞特性,我不能try/catch nextLine(),我需要一种方法来找出在一个块是制作。我想避免更改服务器,我可以在客户端做些什么吗?

我试过 hasNext()、hasNextLine(),但它们似乎在返回结果之前也阻塞了

其他标题相似的问题:

Scanner.nextLine() blocks when using InputStream from Socket

When Does Scanner.nextLine() block?

一种方法是发送字节或字符的总量,在发送消息之前,然后在另一边,你先阅读无阻塞阅读的总量bytes/characters,那么你就阅读了邮件的内容。

换句话说,您可以实现一个简单的协议来发送和阅读您的消息,而不是仅仅依赖于行尾字符,因为在您的情况下显然不能。