출처 : #8698 (VirtualBox Host-Only Network Adapter prevents multicast traffic) – Oracle VM VirtualBox
출처 : 멀티캐스트 송수신 - C# 프로그래밍 배우기 (Learn C# Programming) (csharpstudy.com)
1. Virtual Box 특정 Window Host에는 송신 역할을 설정 하였습니다 [ 위 출처의 소스 인용 ]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace UdpSendTest
{
class Program
{
static void Main(string[] args)
{
// (1) UdpClient 객체 성성
UdpClient udp = new UdpClient();
// (2) Multicast 종단점 설정
IPEndPoint multicastEP = new IPEndPoint(IPAddress.Parse("239.255.255.249"), 9554);
for (int i = 1; i <= 60; i++)
{
byte[] dgram = Encoding.ASCII.GetBytes("Msg#" + i);
// (3) Multicast 그룹에 데이타그램 전송
udp.Send(dgram, dgram.Length, multicastEP);
Console.WriteLine("Send Msg#" + i);
Thread.Sleep(1000);
}
}
}
}
2. Local Host에는 Muticast Packet을 수신 역할을 설정 하였습니다 [ 위 출처의 소스 인용 ]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net;
using System.Threading;
namespace UdpTest
{
class Program
{
static void Main(string[] args)
{
// (1) UdpClient 객체 성성
UdpClient udp = new UdpClient();
// (2) UDP 로컬 IP/포트에 바인딩
// udp.Client.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.ReuseAddress, true);
IPEndPoint localEP = new IPEndPoint(IPAddress.Parse("192.168.56.1"), 9554);
udp.Client.Bind(localEP);
// (3) Multicast 그룹에 Join
IPAddress multicastIP = IPAddress.Parse("239.255.255.249");
udp.JoinMulticastGroup(multicastIP);
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Any, 0);
while (!Console.KeyAvailable)
{
try
{
// (4) Multicast 수신
byte[] buff = udp.Receive(ref remoteEP);
string data = Encoding.ASCII.GetString(buff, 0, buff.Length);
Console.WriteLine("Received=" + data);
}
catch (Exception exception)
{
Console.WriteLine(exception);
}
}
}
}
}
3. 내부 Route 경로에 대하여 목적지가 224.0.0.0인 부분에 대하여 Virtual Box Host Adapter metric 값을 가장 낮게 변경 하였습니다.
4. WireShark를 통하여 VirtualBox Host에서 Multicast 패킷 전송 시에 , LocalHost 에 패킷이 수신되는 것을 확인 할 수 있었습니다.
전송측
수신측
'C#' 카테고리의 다른 글
[C#] HttpWebRequest/HttpWebResponse Memory leak 현상 발생 관련 사항 (0) | 2022.08.12 |
---|---|
[C#] WebView2 Control 이용 PDF 파일 오픈 후 Key , mouse 입력 인쇄 시도 (0) | 2022.05.26 |
[RTSP] TCPClient를 이용하여 OPTIONS 요청 결과 받기 (0) | 2022.03.03 |
Log4Net을 이용한 로그 기록 (0) | 2021.09.03 |
INotifyPropertyChanged 인터페이스를 이용하여 프로퍼티가 변경될때 이벤트를 발생시키는 간단한 예제. (0) | 2013.02.05 |