cs_nicow57
Messages postés2Date d'inscriptionlundi 26 mai 2008StatutMembreDernière intervention24 avril 2009
-
24 avril 2009 à 11:23
cs_nicow57
Messages postés2Date d'inscriptionlundi 26 mai 2008StatutMembreDernière intervention24 avril 2009
-
24 avril 2009 à 13:35
Bonjour et merci de votre futur aide
voila mon soucis:
Contexte : Création d'un jeu en reseau à 2 clients avec un serveur servant de " Boite aux lettre".
Problème: Connexion du 2eme clients. Arret d'une fonction " d'écoute".
En gros, Une fois mon premier client connecté , celui ci précise si il veut jouer contre le serveur ou contre un 2eme client. Si il désire jouer contre un autre client alors j'écoute sur un second port. Cependant cette écoute bloc le serveur tant qu'un client n'est pas connecté.
Ce qui me plairait: Pouvoir écouter pendant une durée définie par exemple 10 sec et si aucun client ne se connecte arreter l'écoute, continuer la suite de mon programme ( envoi d'un message au 1ere client expliquant qu'il n y a pas de joueur dispo pour le moment) et reboucler sur l'écoute. 10 sec etc...
Detail du code:
Pour le moment j'écoute sur 2 ports différents( pas trouvé une autre solution encore) => conséquence: C'est tjs le même client qui se co en premier..; oui c'est nul je sais ... mais je suis pris par le temps .
Code du coté serveur J 'ai essayé de bien le commenter pour que ce soit plus clair :
'si le premier client est connecté
If socketpourclient.Connected
ThenApplication.DoEvents()
Sleep(2000)
'on écoute pour connaitre le choix du client 1 JOUEUR ou 2nbreJ = sr.ReadLine
'si le booleen nbreJ est vrai:le client a choisi 2 joueurs
If nbreJ
Thenlb_affichage.Items.Add(
"le client décide de jouer contre un autre Joueur")
'on renvoit l'information au client: attente sw.WriteLine(
"attente d'un deuxième joueur")sw.Flush()
' on déclare le 2eme port d'écoute pour le deuxieme clientsaddress = IPPoste.AddressList.GetValue(2)
tcpListener2 =
New TcpListener(address, 1017)
TrytcpListener2.Start()
'c'est la que ca se complique: on est en attente d'une connection : Serveur bloqué
Dim socketpourclient2
As Socket = tcpListener2.AcceptSocket
'la j'aimerais écouter qu'un temps limité et pouvoir continuer mon programme si pas de connection.sRemoteAddress2 =
cs_nicow57
Messages postés2Date d'inscriptionlundi 26 mai 2008StatutMembreDernière intervention24 avril 2009 24 avril 2009 à 13:35
Je vois donc d'apres ce que tu dis et si j'ai bien compris, je déclare un seul socket qui s occupe uniquement d'écouter si il y a une nouvelle connection.
donc mes tcplistener2 et socketpourclient2 sont inutiles ?