OVH Cloud OVH Cloud

TcpListener en écoute sur une seule IP

2 réponses
Avatar
Delf
Bonjour.

J'ai créé une application serveur en utilisant TcpListener :

TcpListener serverListener = new TcpListener("127.0.0.1", 1337);

Mon PC a pour IP locale 192.168.0.1.

Si je mets dans le client local l'IP 127.0.0.1, il communique. Si je
mets 192.168.0.1, plus de communication. Et réciproquement avec l'IP
192.168.0.1 au niveau du TcpListener. A quoi cela est-il du ?

J'ai pas testé par le Net car je ne dispose pas de connexion at home :\
Merci.

NB : en IP, ici, je mets un string pour simplifier mais en réalité,
c'est un IPAddress.

--
Delf

2 réponses

Avatar
Faust
/_Delf_ a pensé très fort/ :
Bonjour.

J'ai créé une application serveur en utilisant TcpListener :

TcpListener serverListener = new TcpListener("127.0.0.1", 1337);

Mon PC a pour IP locale 192.168.0.1.

Si je mets dans le client local l'IP 127.0.0.1, il communique. Si je
mets 192.168.0.1, plus de communication. Et réciproquement avec l'IP
192.168.0.1 au niveau du TcpListener. A quoi cela est-il du ?

J'ai pas testé par le Net car je ne dispose pas de connexion at home :
Merci.

NB : en IP, ici, je mets un string pour simplifier mais en réalité, c'est un
IPAddress.



c'est simplement du au fait que techniquement, 127.0.0.1 et 192.168.0.1
(même si pour toi ils représentent la même machine) n'ont strictement
rien à voir entre eux

tu devrais essayer en demandant l'écoute sur 0.0.0.0, en TCP ça
signifie: "sur toutes les adresses"
sinon, voici un bout de code qui te donne la liste de toutes les
adresses d'une machine (excepté la 127.0.0.1)

public static void GetIpAddressList(String hostString)
{
try
{
IPHostEntry hostInfo = Dns.GetHostByName(Dns.GetHostName());
Console.WriteLine("Host name : " + hostInfo.HostName);
Console.WriteLine("IP address List : ");
for(int index=0; index < hostInfo.AddressList.Length; index++)
{
Console.WriteLine(hostInfo.AddressList[index]);
}
}
catch(SocketException e)
{
Console.WriteLine("SocketException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
}

ça écrit les infos sur la console, mais c'est relativement simple à
modifier pour l'exploiter dans une appli

--
Mephitiquement votre,
Faust
ICQ #161252577
Avatar
Delf
Faust wrote:

tu devrais essayer en demandant l'écoute sur 0.0.0.0



En effet, ça fonctionne bien mieux. Merci.

--
Delf