Winsock : probleme de fermeture de port coté client !

captaincav Messages postés 16 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 18 janvier 2006 - 2 juil. 2004 à 10:24
cs_Algade Messages postés 19 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 5 mai 2006 - 1 oct. 2005 à 07:08
Bonjour :)

voila, j'expose mon probleme

Je dispose de X machines (que l'on va appelé "utilisateur" par exemple) qui sont en attente qu'une autre machine (que l'on va appelé "accueil" par exemple) entre en contact avec elle

Mes X machines "utilisateur" ont donc chacunes un winsock serveur qui est en attente et qui ecoute, toute sur le meme port local (par exemple 800)

Ma machine "accueil" possede donc un winsock client qui va se connecter (via le port 800) a l'une des machines "utilisateur" (cette connexion s'effectue via un simple click).

Lors de la 1ere demande de connexion vers une machine "utilisateur", aucun probleme, tout fonctionne. Toutefois, à partir de la 2ieme demande de connexion, une erreur survient : "erreur 10048", qui signifie que mes ports sont occupés !!!! Pourtant, apres chaque connexion de la part de la machine "accueil", je ferme mon winsock client de la facon suivante :

'on ferme le winsock vers le client
monWinsockClient.Close
'attend que le port soit fermé avant de quitter
Do
    DoEvents
    If monWinsockClient.State = 0 Then
        Exit Do
    End If
Loop


Et il n'est pas envisageable que je change le port de communication entre mes machines à chaque demande de connexion !

Donc, qu'est-ce que je fais mal pour qu'un seul client winsock puisse se connecter consécutivement à plusieur serveur winsock ?

Merci, je suis vraiment bloqué la :/

2 réponses

captaincav Messages postés 16 Date d'inscription vendredi 2 août 2002 Statut Membre Dernière intervention 18 janvier 2006
2 juil. 2004 à 11:03
huhu, je viens de trouver finalement

il faut rajouter à la fin de la procedure de fermeture du winsock :

monWinsockClient.localport = 0
monWinsockClient.remoteport = 0


ce qui donne :

'on ferme le winsock vers le client
monWinsockClient.Close
'attend que le port soit fermé avant de quitter
Do
DoEvents
If monWinsockClient.State = 0 Then
Exit Do
End If
Loop
monWinsockClient.localport = 0
monWinsockClient.remoteport = 0


ouf :)

ps : pas sur que le "monWinsockClient.remoteport = 0" soit necessaire mais dans le doute ^^
0
cs_Algade Messages postés 19 Date d'inscription jeudi 26 décembre 2002 Statut Membre Dernière intervention 5 mai 2006
1 oct. 2005 à 07:08
J'ai le même problème
je suis sous W98 côté client et côté serveur
j'ai ajouté la ligne Winsick.remoteport=0 mais ça ne chage rien
ALGADE
dlc.inst@freesbee.fr
0
Rejoignez-nous