使用C#中的特定网络接口和VLC ActiveX插件

时间:2016-08-15 17:14:50

标签: c# vlc

我现在正在使用C#进行IPTV计划。作为媒体引擎,我正在使用VLC ActiveX插件。数据通过UDP协议。

现在我遇到了这个问题。 我有几个网络接口。例如,我有本地连接,用于网络和Internet访问,以及VirtualBox网络。 第一个连接的IP地址为10.10.10.2,第二个连接的地址为192.168.1.2。 当我尝试加入多播组时,一些IGMP查询通过VirtualBox网络而不是本地连接。所以我没有收到多播流量。

我需要为我的应用程序选择特定的接口(局域网)。因此,所有数据都将通过此网络接口。 我在互联网上找到了一些答案,但不是专门针对我的问题。

这是我试图使用的东西:

IPAddress localAddress = IPAddress.Parse("10.10.10.2");
IPEndPoint localEndPoint = new IPEndPoint(localAddress, 0);
Socket client = new Socket(localEndPoint.AddressFamily, SocketType.Raw, ProtocolType.Igmp);
client.Bind(localEndPoint);
axVLCPlugin21.playlist.add("udp://@239.1.9.2:1234", axVLCPlugin21, null);
axVLCPlugin21.playlist.play();

但它不起作用。请有人帮帮我吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我终于做到了!我创建一个套接字并使用我需要的网络接口绑定它。之后,我使用此套接字发送IGMP查询,然后通过所需的网络接口接收数据。

现在我正在使用此代码:

        Socket mcastSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
        IPAddress localAddress = IPAddress.Parse("10.10.10.2");
        IPEndPoint localEndPoint = new IPEndPoint(localAddress, 0);
        mcastSocket.Bind(localEndPoint);

        IPAddress mcastAddress = IPAddress.Parse("239.1.9.2");
        MulticastOption mcastOption = new MulticastOption(mcastAddress, localAddress);
        mcastSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, mcastOption);

        axVLCPlugin21.playlist.add("udp://@239.1.9.2:1234", axVLCPlugin21, null);
        axVLCPlugin21.playlist.play();