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 :



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
D'avance merci