kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 novembre 2005
-
22 juin 2004 à 14:05
kimmelf2
Messages postés267Date d'inscriptionlundi 22 septembre 2003StatutMembreDernière intervention27 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...
vincentescalade
Messages postés87Date d'inscriptionsamedi 3 mai 2003StatutMembreDerniè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 .