подскажите как послеть broadcast по сети

sashenka
Дата: 03.05.2006 11:29:29
есть сервер слушающий порт 10000 хотелось бы чтобы клиенты не указывали сервак ручками а послать в сеть широковещательный пакет и в ответ получить ip сервака..
подскажите как это сделать или дайте линк на сабж
sashenka
Дата: 03.05.2006 13:32:21
нашол пример
клиент
Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram,
            ProtocolType.Udp);

            IPAddress broadcast = IPAddress.Parse("192.168.0.255");

            byte[] sendbuf = Encoding.ASCII.GetBytes("привет");
            IPEndPoint ep = new IPEndPoint(broadcast, 10000);

            s.SendTo(sendbuf, ep);

            textBox1.AppendText("Message sent to the broadcast address");
сервер
delegate void SafeDoListenerDeledate();
        private void DoListen()
        {
            if (!textBox1.InvokeRequired)
            {
                bool done = false;
                int listenPort = 10000;
                UdpClient listener = new UdpClient(listenPort);
                IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, listenPort);
                try
                {

                    while (!done)
                    {
                        textBox1.AppendText("Waiting for broadcast");
                        byte[] bytes = listener.Receive(ref groupEP);

                        textBox1.AppendText("Received broadcast from {0} :\n {1}\n" +
                            groupEP.ToString() +
                            Encoding.ASCII.GetString(bytes, 0, bytes.Length));
                    }
                }
                catch (Exception e)
                {
                    textBox1.AppendText(e.ToString());
                }
                finally
                {
                    listener.Close();
                }
            }

            else
            {
                textBox1.Invoke(new SafeDoListenerDeledate(DoListen), new object[] { });
            }    
            

        }


        private void button1_Click(object sender, EventArgs e)
        {
            listenerThread = new Thread(new ThreadStart(DoListen));
            listenerThread.Start();
        }
    }
но при отсылке запроса сервер впадает в дикий транс ..что не так ?
sashenka
Дата: 03.05.2006 17:42:38
в общем пока определенный результат достигнут
клиент
UdpClient client = new UdpClient();
            IPAddress ip = IPAddress.Broadcast;
            IPEndPoint ipend = new IPEndPoint(ip,10000);
            Byte[] sendBytes = Encoding.ASCII.GetBytes("Is anybody there?");
            client.Send(sendBytes, sendBytes.Length, ipend);
сервер
UdpClient server = new UdpClient(10000);
            IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
            Byte[] receiveBytes = server.Receive(ref RemoteIpEndPoint);
            string returnData = Encoding.ASCII.GetString(receiveBytes);
            textBox1.AppendText(returnData);
но тут пока сервак после получения сообщения останавливает прослушку но это дело техники ... главное что сообщение он уже получает