Question

Je tente de se connecter deux applications séparées via une socket TCP / IP. Dans ce cas, aucune des applications est en cours d'exécution en tant que « client » de l'autre, il serait plus facile de les décrire comme deux serveurs distincts qui ont besoin de communiquer entre eux.

Pour recevoir les données que je suis en utilisant la fonction InputStream.Read() et une fois qu'il reçoit une valeur de -1 il faut arrêter le traitement. Cependant, maintenant le problème est que si un autre ensemble de données vient le long de la InputStream est déjà à la fin du flux (EOS) et ainsi de toutes les nouvelles données envoyées sont abandonnées ou ignorées. La seule façon que j'ai trouvé pour résoudre ce problème est qu'une fois la fin du flux a été atteint, je ferme la prise et rouvre que je pense peut-être mieux traités d'une autre manière.

Comment puis-je réinitialiser le InputStream afin qu'il soit prêt pour la prochaine série de données qui peuvent venir?

Était-ce utile?

La solution

Vous obtenez EOS lors de la lecture d'un socket TCP / IP parce que l'autre extrémité est fermée du côté d'écriture de son support. Une fois que cela se produit, le protocole TCP / IP fournit aucun moyen de « unclose » la connexion.

Si vous ne voulez pas avoir à ouvrir une nouvelle connexion, vous avez besoin d'un protocole d'application au-dessus du protocole de transport TCP / IP qui vous permet de signifier la fin de chaque jeu de données logique ... sans faire fermer.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top