Bonjour,

Comme pas mal de monde ici, je viens exposer mon problème, en espérant que vous pourrez m'aider.

Dans le cadre de mes études, je dois réaliser un petit jeu en réseau. Cependant, lorsque je tente de me connecter à l'IP 127.0.0.1, alors que le serveur est bien lancé, avec comme message :

aucune connexion n’a pu être établie car l’ordinateur cible l’a expressément refusée 127.0.0.1:17123
L'error code renvoyé est le 10045, signifiant que l'opération n'est pas supportée, alors que la connexion s'effectue bien lorsque je tente de me connecter à un serveur sur une autre machine. Netstat indique pourtant que le port est ouvert et en écoute et les pare-feu/antivirus coupés.

Pour résumer la situation, avec A mon pc de dev et B une autre machine quelconque, on a :

client vers serveur
A vers B : OK
B vers A : KO
A vers A : KO
B vers B : KO
Voici le bout de code incriminé :

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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
 
        // vérif de la validité du port
        private bool checkPort (int port)
        {
            if (port < 65535 && port > 0)
                return true;
            else
                return false;
        }
 
        //fonction donnée telle quelle par le prof, vérif l'adresse IP
        private IPAddress AdresseValide(string pc)
        {
            IPAddress Adresse = null;
            try
            {
                IPAddress[] Adresses = Dns.GetHostEntry(pc).AddressList;
                for (int i = 0; i < Adresses.Length; i++)
                {
                    Ping p = new Ping();
                    PingReply r = p.Send(Adresses[i]);
                    if (r.Status == IPStatus.Success)
                        if (!Adresses[i].IsIPv6LinkLocal && !Adresses[i].IsIPv6Multicast && !Adresses[i].IsIPv6SiteLocal && !Adresses[i].IsIPv6Teredo)
                            Adresse = Adresses[i];
                }
            }
            catch (Exception e) { MessageBox.Show("Pas de connexion (" + e.Message + ")"); }
 
            return Adresse;
        }
 
        //démarrage du serveur => OK
        private void btServeur_Click(object sender, EventArgs e)
        {
            _estServeur = true;
            _online = true;
            _monJoueur = tk1;
            btServeur.Enabled = btClient.Enabled = false;
            btDeco.Enabled = true;
            port = int.Parse(tbPort.Text);
            IPAddress IPLocal = AdresseValide(Dns.GetHostName());
            if (checkPort(port))
            {
                TServeur = new TcpListener(IPLocal, port);
                TServeur.Start();
                TClient = TServeur.AcceptTcpClient();
                flux = TClient.GetStream();
                bw = new BinaryWriter(flux);
                br = new BinaryReader(flux);
                bw.Write("Connexion initialisée");
                MessageBox.Show(br.ReadString());
            }
        }
 
        //connexion vers le serveur => 127.0.0.1 fait n'imp
        private void btClient_Click(object sender, EventArgs e)
        {
            if (tbIP.Text.Length > 0)
            {
                _estServeur = false;
                _online = true;
                _monJoueur = tk2;
                btServeur.Enabled = btClient.Enabled = false;
                btDeco.Enabled = true;
                port = int.Parse(tbPort.Text);
                IPAddress IPdistant = AdresseValide(tbIP.Text);
                if (checkPort(port))
                {
                    TClient = new TcpClient();
                    TClient.Connect(IPdistant, port);
                    flux = TClient.GetStream();
                    br = new BinaryReader(flux);
                    bw = new BinaryWriter(flux);
                    bw.Write("Connexion initialisée depuis " + AdresseValide(Dns.GetHostName()) + ".");
                    MessageBox.Show(br.ReadString());
                }
            }
            else
                MessageBox.Show("Indiquer une addresse de connexion", "Avertissement");
        }
Quelqu'un aurait-il une idée de ce qui ne fonctionne pas?

Voilà, j'espère avoir été clair et complet, que mon code n'est pas trop sale, et je vous remercie d'avance pour toute aide qui pourrait m'être apportée.

Yannick.