[VB.NET] Programme d'envoi de paquet

Programme d'envoi de paquet [VB.NET] - C#/.NET managed - Programmation

Marsh Posté le 11-01-2014 à 18:09:46    

Bonjour.
 
Je programme actuellement un micro jeu multijoueur en vb.net , cependant je bloque sur un problème. En effet : pour chaque action ( connexion, déplacement du personnage (...)) je dois envoyer plusieurs informations : un paquet.
 
Cependant, je ne sais pas exactement le réaliser en VB.NET.
 
Par exemple des paquets comme celui-ci pourraient être envoyés. J'avais pensé à créer une classe "paquets". J'aurais mis a l'intérieur la liste des paquets et ce qu'ils contiennent. Mais après concrètement je ne sais pas vraiment comment faire. L'objectif serait d'arriver à une information du genre :
 

Code :
  1. Dim pqt As Paquets.Connection.Verifie = New Paquets.Connection.Verifie
  2.         pqt.ID = '...
  3.         pqt.qty = '...
  4.         ServeurClient.SendPacket(ID,pqt)


 
 
 
Comment pourrais-je mettre un place un tel système ? (Avec un socket ou TcpListener).
 
Merci d'avance ! ;)

Reply

Marsh Posté le 11-01-2014 à 18:09:46   

Reply

Marsh Posté le 20-01-2014 à 17:51:07    

UP !
 
=> J'ai finalement opté pour la sérialisation XML. Cependant, si la sérialisation est opérationnelle il me reste des problèmes...
 
Comment envoyer, avec un protocole TCP (pas de Sockets) le fichier XML obtenu?
( Et juste pour information : est il possible de crypter les fichiers obtenus pour qu'il ne soient pas récuprérables (par MITM par exemple) ?)
PS : Si ça intéresse, je peux donner des cours à distance de maths/physique, jusqu'au niveau école d'ingénieur bac+1 contre des cours de vb.net à niveau relativement faible.
 
Merci d'avance ;)

Reply

Marsh Posté le 21-01-2014 à 22:45:47    

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 :
  1. Private Sub Connection(ByVal TCPClient As TcpClient, ByVal ndc As String, ByVal mdp As String)
  2.        Try
  3.            If ndc <> "" And mdp <> "" Then
  4.                Dim monflux As NetworkStream = TCPClient.GetStream
  5.                Dim MonReader As StreamReader = New StreamReader(monflux)
  6.                Dim MonWriter As StreamWriter = New StreamWriter(monflux)
  7.                Dim paq As New Paquet()
  8.                paq.ndc = ndc.ToString
  9.                paq.mdp = mdp.ToString
  10.                'On crée le fichier et récupère son flux
  11.                Dim Serialiseur As New XmlSerializer(GetType(Paquet))
  12.                Dim Str As New StringWriter
  13.                'Sérialisation et écriture
  14.                Serialiseur.Serialize(Str, paq)
  15.                MonWriter.WriteLine(Str.ToString)
  16.                MonWriter.Flush()
  17.                Str.Close()
  18.            End If
  19.        Catch ex As Exception
  20.            MsgBox(ex.ToString())
  21.        End Try
  22.    End Sub


Le code xml obtenu :
 

Code :
  1. <?xml version="1.0"?>
  2. <Paquet xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  3. <ndc>monndc</ndc>
  4. <mdp>monmotdepassequiestsupergénialmêmesilesgensdisentparfoisquilestunpeulong</mdp>
  5. </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 ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed