Je voulais me servir de StreamWritter//StreamReader pour envoyer des données.
Si cela interresse quelqu'un, voici le code utilisé :
Voila le code client :
Code :
- Private Sub Connection(ByVal TCPClient As TcpClient, ByVal ndc As String, ByVal mdp As String)
- Try
- If ndc <> "" And mdp <> "" Then
- Dim monflux As NetworkStream = TCPClient.GetStream
- Dim MonReader As StreamReader = New StreamReader(monflux)
- Dim MonWriter As StreamWriter = New StreamWriter(monflux)
- Dim paq As New Paquet()
- paq.ndc = ndc.ToString
- paq.mdp = mdp.ToString
- 'On crée le fichier et récupère son flux
- Dim Serialiseur As New XmlSerializer(GetType(Paquet))
- Dim Str As New StringWriter
- 'Sérialisation et écriture
- Serialiseur.Serialize(Str, paq)
- MonWriter.WriteLine(Str.ToString)
- MonWriter.Flush()
- Str.Close()
- End If
- Catch ex As Exception
- MsgBox(ex.ToString())
- End Try
- End Sub
|
Le code xml obtenu :
Code :
- <?xml version="1.0"?>
- <Paquet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <ndc>monndc</ndc>
- <mdp>monmotdepassequiestsupergénialmêmesilesgensdisentparfoisquilestunpeulong</mdp>
- </Paquet>
|
J'ai cependant plus de problème du coté serveur. Mettons que l'envoi du fichier se fasse sans encombres...
Comment lire mon fichier obtenu avec un StreamReader en manipulant des Strings ? En effet la fonction monReader.Readline() ne lit par définition qu'une ligne. De plus, si on fait un while(), ou qu'on utilise la fonction .ReadToEnd, le programme attendra indéfiniment ( puisqu'il ne sais pas quand c'est fini puisque le flux reste ouvert.
Si je définie le type 'paquet' dans mon serveur comme dans mon client : pourrais-je caster le XML obtenu en un joli type paquet?
Merci d'avance pour votre aide