begin process at 2010 02 10 09:30:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > API WINSOCK

API WINSOCK


 Information sur la source

Note :
6,4 / 10 - par 5 personnes
6,40 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Niveau :Débutant Date de création :21/01/2002 Date de mise à jour :22/01/2002 19:05:32 Vu :6 893

Auteur : Pyros

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

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

Sorry ya pas de zip ...

Source

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



 



 Sources du même auteur

Source avec Zip LIRE / ECRIRE SUR UN PORT
Source avec Zip REGEDIT CRACKER
Source avec Zip ALTERNER MAJUSCULES ET MINUSCULES
Source avec Zip CONVERSION EN DECIMAL, HEXADECIMAL & BINAIRE
Source avec Zip INSTALLATION

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) FAIRE LA DIFFÉRENCE ENTRE UNE ADRESSE EMAIL QUI EXISTE D'UNE... par lesinfosdugeek
ENVOYER UN MESSAGE SUR SON COMPTE TWITTER par lesinfosdugeek
Source avec Zip Source avec une capture TROUVER LES CLÉS DE REGISTRE QUI CHANGENT par Flocreate
Source avec Zip IP_PUBLIQUE_INTERNETGETCONNECTEDSTATE par marco62118
Source avec Zip TOUTES LES RÉSOLUTIONS D'ÉCRAN ET TAILLE MAXI DE LA FORM AUD... par marco62118

Commentaires et avis

Commentaire de vbGuy le 21/01/2002 18:48:17

Bien...[???°°°]

Commentaire de kilomaster le 21/01/2002 19:58:55

pourrais tu mettre un zip?

Commentaire de aKheNathOn le 21/01/2002 20:47:10

ça déchire ! Je cherchais exactement ça ! Je sent que je vais trop m'amuser avec ça ! merci encore ...

Commentaire de cyrilp le 22/01/2002 10:21:36

Bien bien bien, ... Mais [oui il y a un "MAIS"], pourrait-on avoir deux ou trois exemple concret... Car créer une socket, OK... Envoyer des données, OK... Mais par exemple, utiliser la fonction "Bind" avec comme parametre une variable de type "SOCK_ADDR" comment je l'initialise ???

Merci quand même, ... A++

Cyrilp

Commentaire de djamel001 le 22/01/2002 13:48:21

ouai moi je suis d'accord avec cyrilp si tu pouvais nous pondre un zip avec des exemples concrets (et des commentaires si c possible) genre un chat client/serveur ca seré l'idéal mais merci pour ce ke t'a posté deja

Commentaire de ErAzEr le 25/01/2002 17:59:29

http://perso.club-internet.fr/piraca/winsock/socket.htm

il y a des exemples pour les api de winsock

Commentaire de beeline le 26/01/2002 23:24:24

ô niveau compatibilité, stabilité et taille,
Vous me consseiller quoi
qlq cé si je peut faire des economie en taille avec se code...

Commentaire de Spylover le 21/06/2002 17:40:02

tu as une erreur pour la déclaration de la socket , car le nom du port tu dois utiliser la commande httons(N°port) pour la convertir au niveau de la socket.

Sinon c pas mal

Commentaire de SuperClic le 19/08/2002 16:56:03

Declare Function connect Lib "wsock32" (ByVal sock As Long, name As SOCK_ADDR, ByVal namelen As Integer) As Long


Type donné par l' utilisateur non défini.
???

Commentaire de Gorgot le 14/10/2002 20:33:53

on fait des économies d'espace car on a pas besoin de j'oindre l'ocx winsock avec nos projets...

Commentaire de yoman64 le 26/02/2003 18:38:17

Pi pour les trojan c'est parfais,mais est-ce que la dll winsock vient avec toute les version de windows?
Et puis est-ce que la dll est plus légère que l'ocx?

Commentaire de sydesys le 30/10/2003 10:09:28

L'API devient importante quand par example on souhaite créer une DLL qui exploite WinSock. Si on utilise l'ocx winsock dans une dll. On obtient des problèmes lors de l'utilisation de cette dll dans plusieurs thread ! Problème de Pile.

voir : http://www.vbfrance.com/code.aspx?ID=8101

Commentaire de flagyg le 03/03/2004 13:17:31

c'est nul,il manque des APIs en plus,et tu aurais au moins pu mettre des fonctions plutôt que de simplement copier le code qui se trouve ici : http://vbasicsite.free.fr/ApiWinsock.htm

Commentaire de damienvi le 01/04/2004 21:02:54

Bonjour,


Je pose le décor : je veux faire de la communication entre un PC et un automate sous une couche TCP IP.

Pour ce faire, j'utilise l'API de windows (wsock32.dll) car je ne veux pas utiliser le contrôle winsock OCX, j'ai bien compris qu'il fallait :

1) initialiser la dll avec
Declare Function WSAStartup Lib "wsock32" _
(ByVal wVersionRequired As Integer, _
wsData As WSA_DATA) As Long

2) créer le socket avec
Declare Function Socket Lib "wsock32.dll" Alias "socket" _
(ByVal afinet As Integer, _
ByVal socktype As Integer, _
ByVal protocol As Integer) As Long

3) connecter le socket avec
Declare Function connect Lib "wsock32" _
(ByVal sock As Long, _
name As SOCK_ADDR, _
ByVal namelen As Integer) As Long

4) Envoyer un message sur le pc distant avec
Declare Function send Lib "wsock32" _
(ByVal sock As Long, _
  buffer As Any, _
  ByVal length As Long, _
  ByVal flags As Long) As Long


Mais c'est maintenant que ça se complique, car avec le "client" crée ci dessus, je voudrais créer un évènement lors d'une réception d'un message par le serveur sur lequel je suis connecté.
Je crois avoir compris (mais là, je suis moins sur) que :

1) on peut analyser les évènemtns qui affectent un socket avec :
Declare Function WSAAsyncSelect Lib "wsock32.dll" _
        (ByVal sock As Long, _
  ByVal hwnd As Long, _
  ByVal wMsg As Integer, _
  ByVal lEvent As Long) As Integer
mais je ne sais pas trop m'en servir, à cause de hwnd.

2) on lit le message du socket reçu avec :
Declare Function recv Lib "wsock32" _
(ByVal sock As Long, _
  buffer As Any, _
  ByVal length As Long, _
  ByVal flags As Long) As Long


Mon problème est donc le suivant :
comment avoir un évènement (du type "Data_arrival" du contrôle winsock) qui me réveille afin que je puisse utiliser ma fonction recv pour lire dans mon socket.


Merci pour le Share ;)
Je suis automaticien et pas informaticien, soyez indulgent ;)

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales