Winsock : question bete

cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 - 8 juin 2005 à 18:43
cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 - 9 juin 2005 à 10:52
Pour accepter un client, le serveur doit faire Close puis Accept requestID.

Private Sub W_ConnectionRequest(ByVal requestID As Long)
W.Close
W.Accept requestID
End Sub

Une fois qu'on est connecté poste à poste (et non multi-chat), a t'on le droit de mettre le serveur en mode listen ? ou faut il rester en mode Close jusqu'à ce que le Client se déconnecté ?

5 réponses

cs_MasterHack Messages postés 586 Date d'inscription jeudi 18 septembre 2003 Statut Membre Dernière intervention 13 février 2008 2
8 juin 2005 à 18:57
salut , la reponse est non faut que le serveur reste connecte


<HR>

Life is short...Learn more
Copy Rights <> Rights to Copy
0
cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 1
8 juin 2005 à 19:03
Dès que le Client se déconnecte et qu'il tente de se reconnecter, j'ai toujours le message d'erreur : "adresse en utilisation" au niveau du Client.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 juin 2005 à 23:45
Salut
Un Winsock est une prise de courant : Si tu as déjà un client de branché dessus, pas possible de lui faire faire autre chose. Donc oui, il faut 'closer' avant de pouvoir lui dire de se remettre en écoute (Listen), prêt à recevoir une nouvelle demande.
Si tu veux que ton serveur puisse répondre à plusieurs clients, il faut charger des composants Winsock en dynamique : Cherche parmi les sources et les messages du forum, ce sujet fait couler beaucoup de ... fontes.

En deux mots :
Client : rien ne change
Serveur : Un Winsock en écoute (WSE)
+ Un autre Winsock pour les réponses (WSR)
Lui mettre l'index 0 dans les propriétés
Dans WSE_ConnectionRequest, tu mets le code
Load WSR(1)
WSR(1).Accept RequestID
Bien sûr, le "1" utilisé en index doit être incrémenté à chaque création d'une nouvelle connexion
Le WSE reste en Listen, on ne touche pas à sont état, il n'est là que pour centraliser les appels, on fabrique un WSR pour chaque réponse.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_max12 Messages postés 1491 Date d'inscription dimanche 19 novembre 2000 Statut Modérateur Dernière intervention 7 juillet 2014
9 juin 2005 à 02:46
Quand le lcient se déconnecte il faut aussi faire .close avant le
nouveau .listen sinon tu aura une erreur possiblement. Dans le cas
d'acceptation multiple de client en dynamique tu n'as pas besoin de
faire close et listen si je me souviens bien.

@+





MSN : x_men_40@hotmail.com
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_salazar Messages postés 241 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 19 février 2006 1
9 juin 2005 à 10:52
Je veux connecter que 2 PC entre eux .Je résume vos infos :

Le serveur doit faire un .close puis un .listen, jusqu'à ce que le client fasse la demande de connexion.
Dès que la demande est recue, le serveur fait un .close puis un .accept.
Pendant tout le temps de la connexion, le serveur reste en l'état sans faire de .close ni de .listen après le .accept.

Dès que le client se déconnecte, le serveur doit faire un .close puis un .listen, jusqu'à ce que le client fasse la demande de connexion.

C'est ca ???
0
Rejoignez-nous