Api winsock

Contenu du snippet

Les APIs de Winsock
(ce serai plus simple avec l activeX).

Sorry ya pas de zip ...

Source / Exemple :


Declare Function Socket Lib "wsock32.dll" Alias "socket" (ByVal afinet As Integer, ByVal socktype As Integer)
Declare Function connect Lib "wsock32" (ByVal sock As Long, name As SOCK_ADDR, ByVal namelen As Integer) As Long
Declare Function bind Lib "wsock32" (ByVal sock As Long, addr As SOCK_ADDR, ByVal namelen As Long) As Long
Declare Function listen Lib "wsock32.dll" (ByVal sock As Long, ByVal backlog As Integer) As Integer
Declare Function send Lib "wsock32" (ByVal sock As Long, buffer As Any, ByVal length As Long, ByVal flags As Long) As Long
Declare Function recv Lib "wsock32" (ByVal sock As Long, buffer As Any, ByVal length As Long, ByVal flags As Long) As Long
    Type IN_ADDR
        S_addr As Long
    End Type
    Type SOCK_ADDR
        sin_family As Integer
        sin_port As Integer
        sin_addr As IN_ADDR
        sin_zero(0 To 7) As Byte
    End Type
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
'module
Public Const PF_INET = 2
Public Const SOCK_STREAM = 1
Public Const SOCK_DGRAM = 2
Public Const IPPROTO_IP = 0
Public Const IPPROTO_TCP = 6
Public Const IPPROTO_UDP = 17
Public Const INVALID_SOCKET = -1
Public Const SOCKET_ERROR = -1
Public Const INADDR_ANY = &H0
Public Const SOCKET_ERROR = -1
Public Const MSG_OOB = &H1
Public Const MSG_DONTROUTE = &H4
Public Const MSG_OOB = &H1
Public Const MSG_PEEK = &H2
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXX'

'connecter

Dim CR As Long
Dim sock As Long
Dim RemoteServer As SOCK_ADDR

RemoteServer.sin_family = AF_INET
RemoteServer.sin_port = htons(2000)
RemoteServer.sin_addr.S_addr = inet_addr("XXX.XXX.XXX.XXX")
RemoteServer.sin_zero(0) = 0
CR = connect(sock, RemoteServer, Len(RemoteServer))

'Création d 'un socket

Dim sock As Long
 
sock = Socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)

'Port

Dim CR As Long
Dim LocalServer As SOCK_ADDR

LocalServer.sin_family = AF_INET
LocalServer.sin_port = 0
LocalServer.sin_addr.S_addr = INADDR_ANY

CR = bind(sock, LocalServer, Len(LocalServer))

'listen

Dim CR As Long
Dim sock As Long

CR = listen(sock, 1)

'Envoyer
 
Dim CR As Long
Dim longSend As Long

longSend = Len(chaine)
ReDim buff(longSend + 1) As Byte

For i = 1 To longSend
    buff(i - 1) = Asc(Mid(chaine, i, 1))
Next
buff(longSend) = 0

CR = send(sock, buff(0), longSend, 0)

'recevoir

Const MAX_BUFF_SIZE = 10000
Dim buff(0 To MAX_BUFF_SIZE) As Byte
Dim sock As Long
Dim CR As Long

CR = recv(sock, buff(0), MAX_BUFF_SIZE, 0)

'Fermer un socket

Dim Result As Long
Dim sock As Long
     
Result = closesocket(sock)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.