.NET中应用程序内共享UdpClient联机的实现方法

2019-05-20 07:58:57王旭


class Program
{
    static void Main(string[] args)
    {
        // Receiver
        MutualUdpClient udpClientA = new MutualUdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));

        MutualUdpClient udpClientB = new MutualUdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));

        // Transmiter
        UdpClient transmiter = new UdpClient(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 9999));

 
        // Send
        transmiter.Send(new byte[] { 55 }, 1, new IPEndPoint(IPAddress.Parse("127.0.0.1"), 1234));

 
        // Receive
        byte[] packet = null;
        IPEndPoint remoteEndPoint = new IPEndPoint(IPAddress.Any, IPEndPoint.MinPort);

        packet = udpClientA.Receive(ref remoteEndPoint);
        Console.WriteLine(string.Format("UdpClientA Receive:{0}", packet[0]));

        packet = udpClientB.Receive(ref remoteEndPoint);
        Console.WriteLine(string.Format("UdpClientB Receive:{0}", packet[0]));

        // End
        Console.ReadLine();

        // Close
        transmiter.Close();
        udpClientB.Close();
        udpClientA.Close();
    }
}

上列程序代码示范如何在系统中使用MutualUdpClient对象,在范例中可以看到程序代码中直接建立了两个相同UDP端点的MutualUdpClient对象,并且可以正常的执行不会出现SocketException的例外通知。而远程设备transmiter所传送的数据封包,在被UdpClientA透过Receive方法接收之后,UdpClientB依然可以透过Receive方法接收同一个资料,这也就验证了MutualUdpClient对象提供了共享通讯联机、共享数据封包的功能。

 

原始码下载: MutualUdpClientSample_jb51net.rar