IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Socket, tableau de byte et Hexa


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Par défaut Socket, tableau de byte et Hexa
    Bonjour, je vous dévoile mon soucis, j'ai un callback de reception des sockets dans mon buffer, et je voudrais qu'après réception d'un socket dans mon tableau de byte,


    Soi :

    1 : Convertir le tableau de byte en hexa
    2 : Filtrer le tableau et supprimer toutes les valeur hexa 0x00, etant un caractère non valide (Je ne peut pas le convertir en string c'est sa mon gros soucis)


    Mon code qui je converti le tableau en string :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub CallBackReceive(ByVal async As IAsyncResult)
     
            Dim LaSocket As Socket = CType(async.AsyncState, Socket)
            Dim read As Integer
     
            Try
                read = LaSocket.EndReceive(async)
            Catch ex As Exception
                read = -1
                Return
            End Try
     
            If (read > 0) Then
                Dim chaine As String = ""
     
                For i = 0 To read
                    If (_Buffer(i) = 0) Then
                        RaiseEvent OnReception(Me, New ElgSocketEventArgs(chaine, LaSocket))
                        chaine = ""
                    Else
                        chaine = chaine & Chr(_Buffer(i))
                    End If
                Next
     
     
                LaSocket.BeginReceive(_Buffer, 0, _Buffer.Length, SocketFlags.None, New AsyncCallback(AddressOf CallBackReceive), LaSocket)
     
            End If
     
        End Sub
    J'ai beau chercher sur gogole, mais je n'ai toujours pas trouver mon bonheur

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    pour filtrer le tableau il suffit de faire un for each dessus et de remove par ci par là (certes plus simple avec une collection qu'un tableau)

    pour convertir des bytes en hexe, google recense à mon avis des milliers de liens l'expliquant ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Par défaut
    Merci, tu peut me montrer un exemple, je veux supprimer les Hexa (0x00) dans le tableau avant de le convertir en string, sil te plait ^^ .

    Sinon, tu me montre un lien ou ont explique la conversion d'un tableau de byte en Hexa , sa me suffit ^^

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 193
    Par défaut
    pas de MP


    conversion d'un tableau de byte en string en évitant le code hexa 00
    si je dis pas de conneries ca donne ca :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ' avec b() as byte et str le string final
     
    for i as integer = 0 to b.getupperbound(0) -1 step 2
        if b(i) = 0 and b(i+1) = 0 then continue for ' 00
        str &= chr(i) & chr(i+1)
    next
    d'ailleurs pour de la concaténation, le system.text.stringbuilder est beaucoup plus rapide
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Par défaut
    Sa ne fonctionne pas, sa me donne aucun caractère dans le TextLog

    Je voudrais simplement remplacer les hexa 0x00 par par exemple 0xe2
    J'ai déjà essayer le remplacement après la conversion en string mais rien a faire, après la conversion en string il coupe les packet a partir de l'Hexa 0x00 :

    Par exemple si je reçois "Salut (0x00) Sava" au lieux de voir sur mon TextLog

    Recv : Salut.Sava '(J'ai mis le remplacement du caractère Chr(0) par ".")'

    Je reçois :

    Recv : Salut
    Recv : Sava

    Donc, le remplacement de ce caractère après la conversion en string et inutile, sauf quand j'envoie étant donner que je fait : Socket.Envoyer("Mon message" & Chr(0) & "Encore un message")

    Le textLog me marque bien :

    Send : Mon message.Encore un message

    C'est un très gros problème pour moi ^^

    Merci quand même

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 62
    Par défaut
    C'est Bon j'ai trouver

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For y = 0 To read ' Read = longueur du packet reçue
            If _Buffer(y) = &H0 Then ' A chaque fois qu'on trouve un hexa 0x00
                    _Buffer(y) = &H1 ' Ont le modifie avec le code hexa qu'ont souhaite
            End If
    Next
    Merci quand même !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Socket][File] Envoyer un tableau de byte
    Par itsmii dans le forum Entrée/Sortie
    Réponses: 14
    Dernier message: 30/01/2014, 09h10
  2. Réponses: 1
    Dernier message: 21/05/2012, 12h08
  3. manipulation tableau de byte et hexa
    Par harf18 dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2010, 16h33
  4. string hexa to tableau de byte
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 28/07/2007, 12h37
  5. tableau de byte + conversion hexa
    Par andromeda dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 20/07/2007, 08h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo