사용 가능한 네트워크로 패킷을 유니 캐스트하는 데 문제가 있습니다
-
11-09-2019 - |
문제
사용 가능한 네트워크로 패킷을 유니 캐스트하려고합니다. 완전히 3 개의 네트워크가 있습니다. 하나의 네트워크에서만 패킷을 얻을 수 있었지만 다른 네트워크에서 패킷을 수신 할 수 없습니다.
이 코드 사용 ..
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);
}
}
프로브는 무엇입니까? 감사.
해결책
패킷을 스스로 보내려고한다고 생각하십니까?
유니 캐스트 및 멀티 캐스트 주소를 혼동하지 않는 것이 확실합니까?
좋아, 당신은 멀티 캐스트하려고하지 않습니다 ...
각 네트워크 인터페이스에는 IP 주소가 있습니다. 여기서하고있는 일은 패킷을 네트워크 카드로 보내는 것입니다. 당신의 컴퓨터는 아마도 자체 IP 주소를 알고 127.0.0.1로 다시 라우팅하기 때문에 실제로 네트워크의 문제가 아닙니다.
다른 팁
둘 이상의 인터페이스가 있으므로 멀티 하이머드입니다. 각 인터페이스마다 iPaddress가 있습니다. 따라서 3 개의 인터페이스를 사용하면 3 개의 로컬 IP가 있습니다. UDPClient를 사용하는 경우 IP를 사용하여 전송할 인터페이스를 지정해야합니다.
다음 3 개의 로컬 IP가 있다고 가정하자.
10.1.0.1
10.2.0.1
10.4.0.1
255.255.0.0의 넷 마스크
UDP 패킷을 10.2.5.5로 보내려면 10.2.0.1을 보내야하므로 다음 코드를 사용하십시오.
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);
UDP 패킷을 10.1.90.5로 보내려면 10.1.0.1을 보내야하므로 다음 코드를 사용하십시오.
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);
둘의 차이점은 LocalEndpoint와 TargetendPoint입니다.
나는 네트워크 전문가가 많지 않지만, 나는 그것을 찌르려고 노력할 것입니다. 나는 모든 패킷이 3 개의 신분을 알고있는 기본 인터페이스를 통해 전송된다고 가정합니다 : 자체, 루프백 및 게이트웨이. 따라서 10.10.1.117로 향하는 192.168.1.111의 패킷은 기본 게이트웨이를 통과해야 할 것입니다 (이것은 192.168.1.1이라고 가정 해 봅시다.) 도달 할 수없는 권리? 모르겠어, 그게 내 추측이야.
그래도, 내가 틀렸을 수도 있습니다. 기본 장치를 사용하지 않고 TCP/IP 스택과 함께 사용 가능한 모든 인터페이스를 사용합니다. 어쨌든, 나는 당신이 찾은 것을보고 궁금합니다. 우리를 계속 업데이트하십시오.
또한 주소를 지적하는 것이 도움이 될 수 있습니다. 추적 경로는 당신의 친구입니다.