DxShadow
Messages postés69Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention12 mai 2013
-
11 mai 2013 à 19:12
DxShadow
Messages postés69Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention12 mai 2013
-
12 mai 2013 à 01:24
Bonsoir
J'ai un problème avec un projet VB.NET (un jeu basé sur GDI+). Il y a un mode multijoueurs que j'ai fait, et qui fonctionne à merveille. J'ai testé sur moi-même en local! (sur mon propre PC, serveur/client sur le même OS, quoi)
Mais dès qu'on teste en LAN/WAN, ça ne fonctionne plus du tout:
En effet, Lorsque je me connecte avec le client et que je regarde l'interface serveur, aucune connexion n'est signalée. Comme si rien ne s'était établi. Pas même un simple message, même Windows ne dit rien (cf. pare-feu Windows) comme s'il ne s'était rien passé. Puis peu après le client m'annonce une erreur de connexion "Time out"... Ce qui confirme bien qu'il n'y a aucun contact...
J'utilise TCPClient et TCPListener.
Je ne comprends rien... J'ai beau réviser, rien n'y fait, avouez que c'est quand même embarrassant et surréaliste . Si ça marche en local, ça marche en LAN/WAN, pas vrai ?!
Des amis ont testé sur leur VPN, même couille, aucune arrivée de message, aucun signal, juste un Time out côté client.
SVP Aidez-moi, je ne sais plus quoi faire! Cela gagne à me rendre vraiment confus, ça dépasse ma logique, en espérant que vous eussiez lu mon message et que vous répondiez le plus vite possible.
DxShadow
Messages postés69Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention12 mai 2013 11 mai 2013 à 20:42
Re et merci pour cette réponse si rapide :)
Donc, voici comme convenu le code qui lance le "listener" :
TCPListener = New TcpListener(Net.IPAddress.Parse("127.0.0.1"), CInt(PortNum.Text))
TCPListener.Start()
Connexions.RunWorkerAsync()
À y réfléchir, le 127.0.0.1 me fait douter, je me demande si ce code est incorrect et si je dois le changer par autre chose (mais par quoi?)
Et voilà [b]Connexions (le BGworker qui traite les connexions) :/b
While Not MustClose 'Tant qu'on ferme pas la fenêtre
If TCPListener.Pending Then
'Procédure d'authentification
ElseIf PList.Count > 0 Then 'Liste des joueurs déjà connectés
'Traitement des commandes envoyées joueur par joueur [...]
End If
System.Threading.Thread.Sleep(0)
End While
DxShadow
Messages postés69Date d'inscriptionsamedi 22 décembre 2007StatutMembreDernière intervention12 mai 2013 11 mai 2013 à 20:53
Oh oui, j'ai vu ça! J'ai remplacé par :
TCPListener = New TcpListener(CInt(PortNum.Text))
Mais ton code est encore mieux (celui plus haut est "obsolète"), merci pour ton précieux aide, moi qui cherchais si loin! :D Je vais enfin inaugurer le mode multijoueurs.
Encore merci
DX.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Remarque : Plutôt que CInt (deprecated d'après la firme de bilou), et si PortNum est un textbox, sers toi de Integer.TryParse pour t'assurer que l'utilisateur a bien saisi un chiffre (numéro de port) valide. Ceci pour éviter les plantages.