在同一子网内,我在用组播,其他程序也在用组播,我怎么查询一个未用的组播地址呢?
比如:如果别人已经用224.224.224.224这个地址了,如果我也用的话,别人往这发数据不是也同时发给我的吗?
谢谢!

解决方案 »

  1.   

    没做过 学习哦
    简单组播实例:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Net;
    using System.IO;
    using System.Net.Sockets;
    using System.Threading;namespace ConsoleApplication1
    {
        class Program
        {
            static void Main(string[] args)
            {
                MultiCastServer server = new MultiCastServer();
                MultiCastClient client = new MultiCastClient();            Thread ClientThread = new Thread(new ThreadStart(client.ReceiveData));
                ClientThread.Start();            Thread ServerThread = new Thread(new ThreadStart(server.SendData));
                ServerThread.Start();        }
        }
        class MultiCastServer {
            private IPAddress multicastIP = IPAddress.Parse("224.110.10.1");
            private int port = 5001;
            public void SendData()
            {
                Console.WriteLine("Sender Start");
                IPEndPoint multicastIep = new IPEndPoint(multicastIP, port);
                UdpClient sendUdpClient = new UdpClient();            sendUdpClient.EnableBroadcast = true;            string sendString = "How   are   you";
                byte[] bytes = System.Text.Encoding.UTF8.GetBytes(sendString);            try
                {
                    sendUdpClient.Send(bytes, bytes.Length, multicastIep);
                }
                catch
                {
                    Console.WriteLine("send error");
                }
                finally
                {
                    sendUdpClient.Close();
                    Console.WriteLine("Sender Close");
                }
            }
        }    class MultiCastClient {        private IPAddress multicastIP = IPAddress.Parse("224.110.10.1");
            private int port = 5001;
            
            public void ReceiveData()
            {
                Console.WriteLine("Reciever Start");
                UdpClient receiveUdp = new UdpClient(this.port);
                try
                {
                    receiveUdp.JoinMulticastGroup(this.multicastIP,10);
                }
                catch (SocketException e)
                {
                    Console.WriteLine(e.Message.ToString());
                }            IPEndPoint remoteHost = null;            while (true)
                {
                    try
                    {
                        byte[] bytes = receiveUdp.Receive(ref remoteHost);
                        string str = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
                        Console.WriteLine(str);
                    }
                    catch
                    {
                        Console.WriteLine("Reciever Close");
                        break;
                    }
                }
            }
        
        }
    }