API WINSOCK

vbGuy Messages postés 60 Date d'inscription samedi 10 novembre 2001 Statut Membre Dernière intervention 13 juin 2004 - 21 janv. 2002 à 18:48
damienvi Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 1 avril 2004 - 1 avril 2004 à 21:02
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/2465-api-winsock

damienvi Messages postés 5 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 1 avril 2004
1 avril 2004 à 21:02
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 ;)
flagyg Messages postés 50 Date d'inscription samedi 1 septembre 2001 Statut Membre Dernière intervention 20 septembre 2006
3 mars 2004 à 13:17
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
sydesys Messages postés 3 Date d'inscription lundi 15 septembre 2003 Statut Membre Dernière intervention 19 septembre 2003
30 oct. 2003 à 10:09
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
yoman64 Messages postés 962 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 2 août 2010 2
26 févr. 2003 à 18:38
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?
Gorgot Messages postés 95 Date d'inscription lundi 28 janvier 2002 Statut Membre Dernière intervention 21 février 2008
14 oct. 2002 à 20:33
on fait des économies d'espace car on a pas besoin de j'oindre l'ocx winsock avec nos projets...
SuperClic Messages postés 48 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 3 octobre 2002
19 août 2002 à 16:56
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.
???
Spylover Messages postés 110 Date d'inscription mercredi 24 avril 2002 Statut Membre Dernière intervention 12 août 2010 1
21 juin 2002 à 17:40
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
beeline Messages postés 83 Date d'inscription jeudi 20 décembre 2001 Statut Membre Dernière intervention 9 juin 2009
26 janv. 2002 à 23:24
ô niveau compatibilité, stabilité et taille,
Vous me consseiller quoi
qlq cé si je peut faire des economie en taille avec se code...
cs_ErAzEr Messages postés 42 Date d'inscription lundi 9 octobre 2000 Statut Membre Dernière intervention 12 novembre 2003
25 janv. 2002 à 17:59
http://perso.club-internet.fr/piraca/winsock/socket.htm

il y a des exemples pour les api de winsock
cs_djamel001 Messages postés 20 Date d'inscription lundi 21 janvier 2002 Statut Membre Dernière intervention 10 avril 2003
22 janv. 2002 à 13:48
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
cs_cyrilp Messages postés 140 Date d'inscription mercredi 4 octobre 2000 Statut Membre Dernière intervention 12 août 2009
22 janv. 2002 à 10:21
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
cs_aKheNathOn Messages postés 575 Date d'inscription dimanche 23 décembre 2001 Statut Membre Dernière intervention 23 octobre 2012
21 janv. 2002 à 20:47
ça déchire ! Je cherchais exactement ça ! Je sent que je vais trop m'amuser avec ça ! merci encore ...
kilomaster Messages postés 130 Date d'inscription mercredi 2 janvier 2002 Statut Membre Dernière intervention 6 décembre 2006
21 janv. 2002 à 19:58
pourrais tu mettre un zip?
vbGuy Messages postés 60 Date d'inscription samedi 10 novembre 2001 Statut Membre Dernière intervention 13 juin 2004
21 janv. 2002 à 18:48
Bien...[???°°°]
Rejoignez-nous