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 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