J'ai effectué plusieurs parties dans VB avec succès et je suis maintenant prête à passer à la phase de jeu multijoueur. Cependant, comme je n'ai aucune expérience dans ce domaine et que je peux trouver peu sur Internet pour m'aider, j'ai un problème que je ne trouve pas la solution. J'utilise VB comme langue, bien que j'aie mis c#
dans les balises parce que je peux comprendre des solutions l'employant à la place.Utilisation de la classe TCPClient: 'Aucune connexion n'a pu être établie car la machine cible l'a refusée'
J'ai essayé de faire un jeu à 2 joueurs en utilisant TCP pour se connecter entre les joueurs.
Il utilise la classe TcpListener
pour le code du serveur et la classe TcpClient
pour le code client et assez utilise beaucoup le modèle qui donne la documentation e: server, client.
Le serveur:
server = New TcpListener(IPAddress.Any, 48000)
Et le client:
Dim client As New TcpClient()
client.Connect(hostAddr, 48000)
Je teste le code à l'aide à la fois serveur et client sur la même machine. Le code fonctionne parfaitement lorsque je fais hostAddr
l'adresse IP locale de mon ordinateur et je peux envoyer des messages avec succès entre les deux programmes.
Toutefois, lorsque je donne hostAddr
mon adresse IP externe, le code client ne fonctionne pas à cause de l'erreur: "Aucune connexion n'a pu être établie car la machine cible l'a refusée activement".
J'ai essayé les éléments suivants qui ne fonctionne pas pour moi:
Arrêt du pare-feu
Changer mes paramètres du routeur pour autoriser les connexions TCP via tous les ports
J'utilise Windows 10 dans une machine virtuelle (j'espère que cela n'affecte pas les choses). Pourrais-je avoir des suggestions sur ce qui pourrait mal se passer et sur la façon dont je devrais déboguer pour savoir si elles sont vraies? En outre, je voudrais savoir si je rencontrerais des problèmes similaires si je devais demander à un ami de lancer le client sur son ordinateur (qui n'est pas sur le même réseau).
J'utilise la même machine pour l'instant, il suffit donc de désactiver le pare-feu (pour la 1ère partie)? – Shuri2060
En outre, j'utilise VirtualBox pour ma machine virtuelle et je pensais que ce serait la même chose que d'utiliser un ordinateur réel car il peut se connecter à Internet. Je suppose que ce n'est pas vrai? – Shuri2060
Merci! J'ai résolu le problème en utilisant la redirection de port à travers la machine virtuelle - s'avère que c'était effectivement le problème – Shuri2060