예제 #1
0
        static void Main(string[] args)
        {
            SenderReceiver sr = new SenderReceiver();
            ReceiverSender rs = new ReceiverSender();

            byte[] sendbuf, bytebufreceive;

            while (true)
            {
                Console.WriteLine("Digite uma mensagem: ");
                sendbuf = Encoding.ASCII.GetBytes(Console.ReadLine());

                sr.s.SendTo(sendbuf, sr.ep);

                Console.WriteLine("Mensagem enviada para o endereço...");


                try
                {
                    Console.WriteLine("Esperando por mensagens...");
                    bytebufreceive = rs.listener.Receive(ref rs.groupEP);

                    Console.WriteLine("Mensagem recebida:");
                    Console.WriteLine(Encoding.ASCII.GetString(bytebufreceive, 0, bytebufreceive.Length));
                }
                catch (SocketException e)
                {
                    Console.WriteLine(e.Message);
                }
                Thread.Sleep(500);
            }
        }
예제 #2
0
        static void ReceiveMessage(string ip, ReceiverSender rs)
        {
            SenderReceiver sr = new SenderReceiver(ip);

            byte[] bytebufreceive, bytesendreply;
            string message = "";

            while (true)
            {
                try
                {
                    bytebufreceive = rs.listener.Receive(ref rs.groupEP);
                    message        = Encoding.ASCII.GetString(bytebufreceive, 0, bytebufreceive.Length);

                    Console.WriteLine("Mensagem recebida do IP({0}): {1}", ip, message);

                    if (message.ToLower().Trim() == "heartbeat request")
                    {
                        bytesendreply = Encoding.ASCII.GetBytes("Heartbeat Reply");
                        Console.WriteLine("Mensagem enviada para o endereço {0}", ip);
                        sr.s.SendTo(bytesendreply, sr.ep);
                    }
                }
                catch (SocketException e)
                {
                    Console.WriteLine(e.Message);
                }
                Thread.Sleep(500);
            }
        }
예제 #3
0
        static void NovaThread(string ip)
        {
            SenderReceiver sr = new SenderReceiver("172.18.3.83");
            ReceiverSender rs = new ReceiverSender();

            byte[] sendbuf, bytebufreceive;

            while (true)
            {
                Thread.Sleep(500);
                sendbuf = Encoding.ASCII.GetBytes("HeartBeat Request");

                sr.s.SendTo(sendbuf, sr.ep);

                Console.WriteLine("Mensagem enviada para o endereço...");


                try
                {
                    Console.WriteLine("Esperando por mensagens...");
                    bytebufreceive = rs.listener.Receive(ref rs.groupEP);

                    Console.WriteLine("Mensagem recebida:");
                    Console.WriteLine(Encoding.ASCII.GetString(bytebufreceive, 0, bytebufreceive.Length));
                }
                catch (SocketException e)
                {
                    Console.WriteLine(e.Message);
                }
                Thread.Sleep(500);
            }
        }
예제 #4
0
        static void ReceiveMessage(List <string> ips, ReceiverSender rs)
        {
            SenderReceiver sr;

            byte[] bytebufreceive, bytesendreply;
            string message = "";

            while (true)
            {
                try
                {
                    bytebufreceive = rs.listener.Receive(ref rs.groupEP);
                    message        = Encoding.ASCII.GetString(bytebufreceive, 0, bytebufreceive.Length);

                    //Console.WriteLine("Mensagem recebida do IP({0}): {1}", rs.groupEP.Address, message);

                    if (message.ToLower().Trim() == "heartbeat request")
                    {
                        bytesendreply = Encoding.ASCII.GetBytes("HeartBeat Reply");
                        // Console.WriteLine("Mensagem enviada para o endereço {0}", rs.groupEP.Address);
                        sr = new SenderReceiver(rs.groupEP.Address.ToString());
                        sr.s.SendTo(bytesendreply, sr.ep);

                        if (!ips.Contains(rs.groupEP.Address.ToString()))
                        {
                            ips.Add(rs.groupEP.Address.ToString());
                            ipsDict.Add(rs.groupEP.Address.ToString(), ipsDict.Count);
                            Thread s = new Thread(() => SendMessage(rs.groupEP.Address.ToString()));
                            s.Start();
                        }
                    }

                    if (!alive.Contains(rs.groupEP.Address.ToString()))
                    {
                        alive.Add(rs.groupEP.Address.ToString());

                        foreach (string ip in alive)
                        {
                            int position = ipsDict[ip];

                            if (position < lider)
                            {
                                lider   = position;
                                liderIP = ip;
                            }
                        }

                        Console.WriteLine("Lider: {0} | IP: {1}", lider, liderIP);
                    }

                    Thread.Sleep(1000);
                }
                catch (SocketException e)
                {
                    Console.WriteLine(e.Message);
                }
            }
        }
예제 #5
0
        static void SendMessage(string ip)
        {
            SenderReceiver sr = new SenderReceiver(ip);

            byte[] sendbuf;

            while (true)
            {
                sendbuf = Encoding.ASCII.GetBytes("HeartBeat Request");

                sr.s.SendTo(sendbuf, sr.ep);

                //Console.WriteLine("Mensagem enviada para o endereço {0}", ip);

                Thread.Sleep(1000);
            }
        }
예제 #6
0
 static void ResponseRequest(SenderReceiver senderReceiver, byte[] bytesendreply)
 {
     senderReceiver.s.SendTo(bytesendreply, senderReceiver.ep);
 }