Java nextLine bloqué sur le socket

J’utilise un serveur et un client où le serveur envoie une chaîne avec un nombre inconnu de \ n à l’intérieur. Ex:

foo1 \n foo2 \n foo3 

ou

 foo1 \n foo2 

Sur le client, en raison de la nature bloquante de socket, je ne peux pas essayer / intercepter nextLine (), et j’ai besoin d’un moyen de savoir combien de \ n il y a côté client avant qu’un bloc soit créé. Je voudrais éviter de changer le serveur, y a-t-il quelque chose que je puisse faire côté client?

J’ai essayé hasNext (), hasNextLine () mais ils semblent aussi bloquer avant de retourner un résultat

Autres questions similaires dans le titre:

Scanner.nextLine () bloque lors de l’utilisation de InputStream depuis Socket

Quand Scanner.nextLine () est-il bloqué?

Un moyen pourrait être d’ envoyer le nombre total d’octets ou de caractères à lire, avant d’envoyer le message, puis de l’autre côté, vous lisez d’abord le nombre total d’octets / caractères à lire sans bloquer, puis vous lisez le contenu du message .

En d’autres termes, vous pouvez implémenter un protocole simple pour envoyer et lire vos messages au lieu de vous fier uniquement aux caractères de fin de ligne, ce que vous ne pouvez évidemment pas faire dans votre cas.