Pb de gestion de sockets

kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005 - 22 juin 2004 à 14:05
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005 - 24 juin 2004 à 14:08
hello !

voivi mon pb : je voudrais realiser un serveur TCP avec des WinSock.

pour cela je place une socket en ecoute sur le port 10000 et lorsqu'une demande de connection arrive, je cree une autre socket sur un port libre quelquonque et c'est cette socket qui va accepter la connection.

la ou ca m'embete, c'est qu'en regle generale, on utilise un tableau de winsock qu'on redimensionne au fur et a mesure que les connections arrivent. Mon soucis viens surtout au moment de la deconnection : il faut retirer les sockets fermes du tabelau, et la (je trouve) ca deviens un peu chaud a gerer : si on a N sockets dans le tableau et qu'on ferme la socket I, on va garder les sockets 1=>I-1 et ensuite reculer d'1 "case" les sockets I+1=>N

D'ou mon idee de passer par les collections.

j'ai essaye ceci :

private sub Sck_ConnectionRequest (ByVal requestID as long)
dim ws as WinSock

if ws.state<>sckclosed then ws.close
ws.localport = FindFreePort(START_PORT, END_PORT)
ws.accept requestID
if Sck.state<>sckclosed then sck.close
sck.listen
end sub

lors de l'execution, ca me genere une erreur 91 (variable objet ouvariable bloc With non definie) sur le if ws.state<>sckclosed then

Pouvez vous m'aider ???

une fois que ce bout de code fonctionnera, je rajouterais une ligne du genre

SckCollection.Add ws

A noter que j'ai aussi essayer un truc du genre

type sck
sock as winsock
end type

et en remplacant

dim ws as winsock par dim s as sck

ainsi qu'en modifiant les ws par des s.sock mais ca me genere exactement la meme erreur...

4 réponses

vincentescalade Messages postés 87 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 9 juin 2005
22 juin 2004 à 14:59
tu a oublier :

set ws = new Winscok

juste après :

dim ws as WinSock

Voilà j'espère que ca taidera
0
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
23 juin 2004 à 23:16
apparemment, le new ne veux pas prendre un type winsock
0
vincentescalade Messages postés 87 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 9 juin 2005
24 juin 2004 à 10:21
Oui c'est normale, ba il faut que tu enlève le contrôle winsock de tes Composants et que tu l'ajoute dans les Ressources. Avec ça ca devrait marcher.

PS : le contrôle winsock n'est pas dans la liste de tes ressources. Il faut que tu l'ajoute manuellement en cliquant sur parcourir. Moi il se trouve dans le dossier : \Windows\System32\ et il se nomme MSWINSCK.OCX .

:big) Voilà !!!! :big)

Je pense que ca devrait marcher maintenant.

@ ++++

Bonne prog
0
kimmelf2 Messages postés 267 Date d'inscription lundi 22 septembre 2003 Statut Membre Dernière intervention 27 novembre 2005
24 juin 2004 à 14:08
?????

comment tu ajoutes ds les ressources?
P.S : J'ai VB5
0