Bonjour,
Je suis en train de coder une librairie de client/serveur pour un protocole assimilé à telnet. En gros, l'utilisateur se connecte avec telnet au serveur, il saisis des commandes au clavier, le serveur lui renvoie une réponse.
Concrètement :
- le serveur c'est un TcpListener qui génère des TcpClient, on récupère le flux (GetStream), on y met un streamreader et un streamwriter.
- côté client, un TcpClient qui se connecte, un StreamReader et un StreamWriter sur le flux.
Là où ça pose problème, c'est pour activer un mode compressé, qui n'est autre q'une compression GZip du flux réseau.
En gros, avant :
Serveur [StreamReader/StreamWriter] =<=>= [NetworkStream] =<=>= ... Internet ... =<=>= [NetworkStream] =<=>= [StreamReader/StreamWriter] Client
Après
Serveur [StreamWriter] =>= [GZipStream(compress)] =>= [NetworkStream] =<=>= ... Internet ...
[StreamReader] =<= [GZipStream(decompress)] =<= [NetworkStream] =<=>= ... Internet ...
(symétrique coté client)
Avec ce fonctionnement, les ReadLine des StreamReader bloquent des deux côtés... une idée ?
Sinon, comment faire pour garder les StreamReader tout en compressant le flux ?