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 :
D'avance merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 'si le premier client est connecté If socketpourclient.Connected Then Application.DoEvents() Sleep(2000) 'on écoute pour connaitre le choix du client 1 JOUEUR ou 2 nbreJ = sr.ReadLine 'si le booleen nbreJ est vrai:le client a choisi 2 joueurs If nbreJ Then lb_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 clients address = IPPoste.AddressList.GetValue(2) tcpListener2 = New TcpListener(address, 1017) Try tcpListener2.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 = CType(socketpourclient2.RemoteEndPoint, IPEndPoint).Address.ToString If socketpourclient2.Connected Then lb_affichage.Items.Add("un client vient de se connecter") lb_affichage.Items.Add("ip du client:" & sRemoteAddress) End If Catch End Try End If End If
Partager