利用可能なネットワークへのユニキャストパケットしようとしたときの問題

StackOverflow https://stackoverflow.com/questions/1096497

  •  11-09-2019
  •  | 
  •  

質問

利用可能なネットワークへユニキャストパケットしよう。完全に3ネットワークがあります。一つだけnetwork.Butにパケットを取得するために管理し、私は別のネットワークにパケットを受信することはできませんしています。

このコードを使用して..

        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);
            }
        }

PROBは何ですか?おかげます。

役に立ちましたか?

解決

私は、あなたが自分自身にパケットを送信しようとしていることと思いますか?

あなたは、ユニキャストとマルチキャストアドレスを混乱していないことを確認?です。

[OK]をので、あなたがマルチキャストしようとしていない...

あなたのネットワーク・インタフェースは、それぞれのIPアドレスを持っています。あなたがここでやっていることはあなたのネットワークカードにパケットを送信することです。あなたのマシンはおそらく独自のIPアドレスを知っているし、127.0.0.1にそれを再ルーティングするので、それは本当にネットワークの問題ではありません。

他のヒント

あなたが複数のインタフェースを持っているので、

あなたはマルチホームされています。各インターフェイスのためには、IPアドレスを持つことになります。だから、3つのインタフェースを持つあなたは、3つのローカルIPの必要があります。あなたがUdpClientを使用する場合、あなたはそれがIPだ使って送信するインターフェイスを指定する必要があります。

あなたは、次の3つのローカルIPの

を持っていると仮定することができます
  

10.1.0.1
  10.2.0.1
  10.4.0.1
  255.255.0.0のネットマスクと

と、あなたはそう、次のコードを使用10.2.0.1を、それを送信する必要が10.2.5.5するUDPパケットを送信したい。

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);

など

次のコードを使用しますが、10.1.0.1を、それを送信する必要が10.1.90.5にUDPパケットを送信します
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);

2つの違いはlocalEndPointとtargetEndPointである。

私は、ネットワークの第一人者のあまりないんだけど、私はそれで刺しを取るしようとするでしょう。私は、すべてのパケットが3人の住所がを知っているデフォルトのインターフェイスを介して送信されていることを前提としています。それは自分の、ループバック、およびゲートウェイです。したがって10.10.1.117宛て192.168.1.111からのパケットは、デフォルトゲートウェイを通過する必要があるだろうし、宛先ホストが、何192.168.1.1が10.10.0.0へのルートを知らない場合には(ちょうどこれが192.168.1.1れるとしましょう)到達不可能右?私はそれが私の推測ですが、わかりません。

が、多分私は間違っています。多分それは、デフォルトのデバイスを使用せず、代わりにTCP / IPスタックと一緒に使用可能なすべてのインターフェースを使用しています。とにかく、私はあなたがが見つけるものを見るために興味があります。更新私たちを維持してください。

また、アドレスの下に注目することは役に立つかもしれません。トレースルートはあなたの友達です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top