Le problème que j'ai est que lorsque j'utilise un InputStream pour lire des octets, il bloque jusqu'à ce que la connexion soit terminée. EG:Java: Gestion correcte des E/S de réseau?
InputStream is = socket.getInputStream();
byte[] buffer = new byte[20000];
while (is.read(buffer) != -1) {
System.out.println("reading");
}
System.out.println("socket read");
« socket lire » n'imprime pas jusqu'à ce que le paquet de Fionie est en fait recieved, fermant ainsi la connexion. Quelle est la bonne façon de recevoir tous les octets sans bloquer et attendre que la connexion tombe?
Bonne réponse, bienvenue à SO – Zombies
lorsque vous avez compris que cela ne fonctionne pas toujours, revisiter ma réponse –
Ne devrait pas appel à 'is.available()' se produire avant le 'est. read() 'call, étant donné que' is.read() 'pourrait bloquer si aucun octet n'est disponible lors de la première lecture? –