Je suis nouveau à la programmation réseau, et j'ai un problème avec un code que j'ai testé en tant que base d'un programme de chat LAN.Problème UDP avec non-réception
Code Serveur:
public static void Main()
{
UdpClient publisher = new UdpClient("230.0.0.1", 8899);
UdpClient subscriber = new UdpClient("230.0.0.2", 8800);
IPAddress addr = IPAddress.Parse("230.0.0.1");
subscriber.JoinMulticastGroup(addr);
Console.WriteLine("Running chat program at 230.0.0.1:8899");
while (true)
{
IPEndPoint ep = null;
byte[] chats = subscriber.Receive(ref ep);
string chatstring = Encoding.ASCII.GetString(chats);
Console.WriteLine(chatstring);
string msg = String.Format(chatstring);
byte[] sdata = Encoding.ASCII.GetBytes(msg);
publisher.Send(sdata, sdata.Length);
System.Threading.Thread.Sleep(500);
}
}
Et le programme client:
static void Main(string[] args)
{
UdpClient subscriber = new UdpClient("230.0.0.1", 8899);
IPAddress addr = IPAddress.Parse("230.0.0.1");
subscriber.JoinMulticastGroup(addr);
IPEndPoint ep = null;
Thread SendChats = new Thread(Send);
SendChats.Start();
while (true)
{
byte[] receivedbytes = subscriber.Receive(ref ep);
string receivedchats = Encoding.ASCII.GetString(receivedbytes);
Console.WriteLine(receivedchats);
Thread.Sleep(500);
}
}
static void Send()
{
UdpClient publisher = new UdpClient("230.0.0.2", 8800);
while (true)
{
string msg = Console.ReadLine();
byte[] sdata = Encoding.ASCII.GetBytes(msg);
publisher.Send(sdata, sdata.Length);
Thread.Sleep(400);
}
}
Par mon comprendre, le programme serveur DEVRAIT recevoir des données du client, mais hélas, après un message est tapé et livré, il n'y a jamais rien de traverser. Est-ce que je manque quelque chose?
Prévention par le routeur? Lorsque cela ne fonctionne que entre deux ordinateurs ou plus sur LAN ... ET TY pour le catch. J'ai enlevé l'adresse dans l'abonné, et ai changé la variable d'addr. – Bloodyaugust
Aucun problème. Les problèmes de routeur/commutateur n'interviennent que si vous tentez d'envoyer des paquets de multidiffusion sur différents segments LAN. Si le client et le serveur sont sur le même réseau local, cela n'est pas pertinent. – Paolo