Frage

Der Versuch, Unicast-Pakete mit verfügbaren Netzwerken. Insgesamt gibt es drei Netzwerke. Managed-Pakete zu bekommen in nur ein network.But ich bin nicht in der Lage, die Pakete in verschiedenen Netzwerken zu erhalten.

mit diesem Code ..

        foreach (var i in System.Net.NetworkInformation.NetworkInterface.GetAllNetworkInterfaces())
        {
            foreach (var ua in i.GetIPProperties().UnicastAddresses)
            {
                System.Windows.Forms.MessageBox.Show(ua.Address.ToString());
                IPAddress Tip = IPAddress.Parse(ua.Address.ToString());
                IPEndPoint targetEndPoint = new IPEndPoint(Tip, iTargetPort);
                MyUdpClient sendUdpClient = new MyUdpClient();
                int numBytesSent = sendUdpClient.Send(CombineHeaderBody, CombineHeaderBody.Length, targetEndPoint);
            }
        }

Was ist das Prob? Danke.

War es hilfreich?

Lösung

Ich denke, dass Sie Pakete zu senden selbst sind versuchen?

Sind Sie sicher, dass Sie Unicast- und Multicast-Adressen nicht verwirrend?

Ok, so dass Sie nicht auf Multicast versuchen ...

Jeder Ihrer Netzwerk-Schnittstelle eine IP-Adresse. Was Sie hier tun, ist ein Paket an Ihre Netzwerkkarte sendet. Es ist nicht wirklich eine Frage des Netzwerks, da Ihre Maschine höchstwahrscheinlich seine eigenen IP-Adressen kennt und Umleiten es auf 127.0.0.1

Andere Tipps

Da Sie mehr als eine Schnittstelle haben, werden Sie mehrfach vernetzt. Für jede Schnittstelle erhalten Sie eine IPaddress haben. Also mit drei Schnittstellen haben Sie drei lokale IP-Adressen. Wenn Sie die UdpClient verwenden müssen Sie festlegen, welche Schnittstelle versenden, indem Sie seine IP.

können Sie die folgenden drei lokale IP

annehmen,
  

10.1.0.1
  10.2.0.1
  10.4.0.1
  mit einem Wert von 255.255.0.0

und Sie wollen ein UDP-Paket senden Sie es schicken 10.2.0.1 10.2.5.5 müssen, so verwenden Sie den folgenden Code

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("10.2.0.1"), 0);
IPEndPoint targetEndPoint = new IPEndPoint(IPAddress.Parse("10.2.5.5"), iTargetPort);
UdpClient sendUdpClient = new UdpClient(localEndPoint);
int numBytesSent = sendUdpClient.Send(CombineHeaderBody, CombineHeaderBody.Length, targetEndPoint);

und ein UDP-Paket zu 10.1.90.5 senden Sie müssen es 10.1.0.1 auszusenden, so verwenden Sie den folgenden Code

IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Parse("10.1.0.1"), 0);
IPEndPoint targetEndPoint = new IPEndPoint(IPAddress.Parse("10.1.90.5"), iTargetPort);
UdpClient sendUdpClient = new UdpClient(localEndPoint);
int numBytesSent = sendUdpClient.Send(CombineHeaderBody, CombineHeaderBody.Length, targetEndPoint);

Der Unterschied zwischen den beiden sind die LocalEndPoint und der targetEndPoint.

Ich bin nicht viel von einem Netzwerk-Guru, aber ich werde versuchen, einen Stich zu nehmen. Ich gehe davon aus, dass alle Pakete über die Standardschnittstelle gesendet werden, das von drei Adressen kennt: es ist eigener, Loopback und Gateway. Daher ist ein Paket, das von 192.168.1.111 bestimmt für 10.10.1.117 benötigen würde durch das Standard-Gateway passieren (sagen wir einfach, dies ist 192.168.1.1), aber was ist, wenn 192.168.1.1 nicht um die Strecke zu 10.10.0.0 nicht kennt, dann Host-Ziel unerreichbar richtig? Ich weiß nicht, das ist meine Vermutung.

Obwohl, vielleicht bin ich falsch. Vielleicht ist es kein Standard-Gerät verwenden, und verwendet stattdessen alle verfügbaren Schnittstellen zusammen mit dem TCP / IP-Stack. Wie dem auch sei, ich bin gespannt, was obwohl Sie finden. Bitte halten Sie uns aktualisiert.

Darüber hinaus notieren die Adressen könnte hilfreich sein. Trace Route ist dein Freund.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top