none
Comment traiter une chaîne d'octets reçus via winsock DataArrival RRS feed

  • Question

  • Bonjour,

    je reçois des données sous forme d'une chaîne composée de 11 octets.

    Comment faire pour obtenir une variable contenant seulement la valeur du dernier octet ?

    Merci

    samedi 26 mai 2012 20:23

Réponses

  • Bonjour Lericou88,

    Si comme le laisse supposer 'DataArrival' dans le titre, il s'agit de VB6, il existe bien un forum dédié :

      <http://social.msdn.microsoft.com/Forums/fr-FR/vb6fr/threads>

    Un petit exemple (utilisant TCP). Un programme "écouteur/récepteur" :

    ' Programme écouteur/récepteur
    ' ----------------------------
    Option Explicit
    
    Const MyPort As Integer = 3000
    
    Private Sub Form_Load()
      With Me.Winsock1
        .Protocol = sckTCPProtocol
        .LocalPort = MyPort
        .Listen
      End With
    End Sub
    
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      If Winsock1.State <> sckClosed Then Winsock1.Close
      Winsock1.Accept requestID
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
      Dim Buf As String
    
      Buf = Space(bytesTotal)
      Winsock1.GetData Buf, vbString, 11
      MsgBox Mid(Buf, 11, 1)
    End Sub
    

    A noter que la méthode 'GetData' retourne les données dans un Variant.

    Et un programme "émetteur" :

    ' Programme Emetteur
    ' ------------------
    Option Explicit
    
    Const MyPort As Integer = 3000
    
    Private Sub Form_Load()
      With Me.Winsock1
        .Protocol = sckTCPProtocol
        .Connect "127.0.0.1", MyPort
      End With
    End Sub
    
    Private Sub Command1_Click()
      Dim Buf As String
      
      Me.Winsock1.SendData "ABCDEFGHIJK"
    End Sub
    
    Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
      Debug.Print Number & " : " & Description & " (" & Source & ")"
    End Sub
    
    



    Cordialement, Jacques

    • Marqué comme réponse Lericou88 lundi 28 mai 2012 21:54
    dimanche 27 mai 2012 06:33

Toutes les réponses

  • Bonjour,

    Actuellement comment sont stockées les données reçues ? Les lire par exemple dans un tableau d'octets et prendre l'octet d'index 10 pour en faire ce que vous voulez ?

    Comme cela semble une question VB6, essayez peut-être de trouver un forum VB6 (ce forum est consacré à VB 2010).


    Please always mark whatever response solved your issue so that the thread is properly marked as "Answered".

    samedi 26 mai 2012 21:18
    Modérateur
  • Bonjour Lericou88,

    Si comme le laisse supposer 'DataArrival' dans le titre, il s'agit de VB6, il existe bien un forum dédié :

      <http://social.msdn.microsoft.com/Forums/fr-FR/vb6fr/threads>

    Un petit exemple (utilisant TCP). Un programme "écouteur/récepteur" :

    ' Programme écouteur/récepteur
    ' ----------------------------
    Option Explicit
    
    Const MyPort As Integer = 3000
    
    Private Sub Form_Load()
      With Me.Winsock1
        .Protocol = sckTCPProtocol
        .LocalPort = MyPort
        .Listen
      End With
    End Sub
    
    Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
      If Winsock1.State <> sckClosed Then Winsock1.Close
      Winsock1.Accept requestID
    End Sub
    
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
      Dim Buf As String
    
      Buf = Space(bytesTotal)
      Winsock1.GetData Buf, vbString, 11
      MsgBox Mid(Buf, 11, 1)
    End Sub
    

    A noter que la méthode 'GetData' retourne les données dans un Variant.

    Et un programme "émetteur" :

    ' Programme Emetteur
    ' ------------------
    Option Explicit
    
    Const MyPort As Integer = 3000
    
    Private Sub Form_Load()
      With Me.Winsock1
        .Protocol = sckTCPProtocol
        .Connect "127.0.0.1", MyPort
      End With
    End Sub
    
    Private Sub Command1_Click()
      Dim Buf As String
      
      Me.Winsock1.SendData "ABCDEFGHIJK"
    End Sub
    
    Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)
      Debug.Print Number & " : " & Description & " (" & Source & ")"
    End Sub
    
    



    Cordialement, Jacques

    • Marqué comme réponse Lericou88 lundi 28 mai 2012 21:54
    dimanche 27 mai 2012 06:33