| 12
 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
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 
 |  
Public Const AF_INET = 2
Public Const SOCK_STREAM = 1
Public Const IPPROTO_TCP = 6
 
Function exemple()
Dim lData As WSADATA
Dim lsock As Long
Dim lname As SOCKADDR
Dim lRet As Long
 
' Initialisation de Winsock
If WSAStartup(257, lData) = 0 Then
   ' Création d'une socket
   lsock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)
   If lsock <> -1 Then
 
        ' Connection avec le socket
        lname.sin_family = AF_INET ' famille "classique"
        lname.sin_port(1) = 502 \ 256
        lname.sin_port(2) = 502 Mod 256
        lname.sin_addr = inet_addr("127.0.0.1")
 
        lRet = Connect(lsock, lname, LenB(lname))
        If lRet = 0 Then
 
           Dim envoi As String
           ' Ecriture de la valeur 50 à l'adresse %MW1
           envoi = Chr(0) + Chr(0) + Chr(0) + Chr(0) + Chr(0) + Chr(6) + Chr(1) + Chr(6) ' en-tête et code fonction (6=ecriture un mot)
           envoi = envoi + Chr(0) + Chr(1)  ' adresse d'écriture
           envoi = envoi + Chr(0) + Chr(50) ' valeur à écrire
           ' Lecture d'un mot
           'envoi = Chr(0) + Chr(0) + Chr(0) + Chr(0) + Chr(0) + Chr(6) + Chr(1) + Chr(3)
           'envoi = envoi + Chr(0) + Chr(0)
           'envoi = envoi + Chr(0) + Chr(1)
 
           ' Envoi des données
           lRet = sendstr(lsock, envoi, Len(envoi), 0)
 
           ' Réception des données
           lStrToReceive = Space(255)
           Dim lrec As Long
           Dim lDoEvenets
 
           lDoEvenets = DoEvents
           lrec = recvstr(lsock, lStrToReceive, 255, 0)
 
           If lrec > 0 Then
               Dim recu As String
               recu = ""
               For i = 1 To lrec
                 recu = recu & Str(Asc(Mid(lStrToReceive, i, 1))) & "/"
               Next
 
               Debug.Print "Octets reçus : " & lrec & " / " & recu
           End If
 
       End If 
       closesocket lsock
   End If  
   WSACleanup
End If
End Function | 
Partager