Java nextLine在socket上被阻塞

时间:2016-11-08 18:04:52

标签: java sockets server console client

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

foo1 \n foo2 \n foo3

foo1 \n foo2

在客户端上,由于套接字的阻塞特性,我无法尝试/捕获nextLine(),我需要一种方法来查找在创建块之前有多少客户端。我想避免更换服务器,有什么我可以做客户端的吗?

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

其他类似标题的问题:

Scanner.nextLine() blocks when using InputStream from Socket

When Does Scanner.nextLine() block?

1 个答案:

答案 0 :(得分:1)

一种方法是在发送邮件之前发送总字节数或字符来读取,然后在另一方面,首先读取总字节数/字符数阅读而不阻止,然后您阅读邮件的内容。

换句话说,您可以实施一个简单的协议来发送和阅读您的邮件,而不是仅仅依赖于行尾字符,因为您显然无法做到这一点。