Question pour les pro de l'api Winsock

Spylover Messages postés 110 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 12 août 2010 - 21 juin 2002 à 21:41
bambino1 Messages postés 6 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 28 avril 2006 - 25 janv. 2005 à 18:06
J'utilisais le controle winsock (mswinsk.ocx), je suis entrain de migrer mon serveur web en utlisant l'api wsock32.dll.

J'envoie, je recois pour ca rien de complexe mais en ce qui concerne la fonction :

winsock1.sendcomplete() existe t'elle sous l'api.

C'est pas une question pour débutant NOn ?

2 réponses

damienvi Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 1 avril 2004
1 avril 2004 à 21:17
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 ;)
0
bambino1 Messages postés 6 Date d'inscription jeudi 25 mars 2004 Statut Membre Dernière intervention 28 avril 2006
25 janv. 2005 à 18:06
Jette un oeil à cette source, ça pourra t'aider.http://www.vbfrance.com/code.aspx?ID=2465

bambino1
0
Rejoignez-nous