예제 #1
0
        public void beacon()
        {
            // txtPuertoCliente.Text; //COJO LA IP DEL OTRO (PUESTA A MANO)
            string hostName = Dns.GetHostName();
            IPHostEntry thisHost = Dns.GetHostEntry(hostName);
            string thisIpAddr = thisHost.AddressList[0].ToString();//RECUPERO MI IP
            Random randomNumber = new Random(DateTime.Now.Second);
            BD DButiles = new BD(Formulario);
            /*POR AQUI DEBO GENERAR EL BEACON A ENVIAR*/
            Thread hiloCliente;// = new Thread(new ThreadStart(IniciarCliente));
            // hiloCliente.Start();

            int cambioPseu = 50 + randomNumber.Next(10);//calculamos aleatoriamente cuantos beacons enviaremos antes de hacer el cambio de pseudonimo
            int vecesPseu = 0;
            string newPseu;
            while (!Formulario.cerrar)

            {// EL BEACON SE ENVIA PERIODICAMENTE(en un rango de tiempo)
                IP = IPAddress.Broadcast.ToString();//"192.168.1.255";//txtIpCliente.Text; //BROADCAST
                puerto = "9050";
                //msj = "01," + thisIpAddr + "," + "PSEU1,"+DateTime.Now.ToString()+", Ek1(ID1:KUid1:TimeStamp)";//";// +generaHash();//txtSmsCliente.Text;

                msj = "01," + Server.myPseudonimo + "," + DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss") +", Ek1(ID1:KUid1:TimeStamp)";//";// +generaHash();//txtSmsCliente.Text;

                hiloCliente = new Thread(new ThreadStart(IniciarCliente));
                hiloCliente.Start();
                Thread.Sleep(1000 * (8 + randomNumber.Next(10)));//beacon enviado en tiempo aleatorio entre 5 y 15
                vecesPseu++;
                if (vecesPseu == cambioPseu)//cuando se alcance esta cantidad se cambia el pseudonimo
                {
                    newPseu = "pseu" + randomNumber.Next(99999);
                    Server.viejoPseu = Server.myPseudonimo;
                    msj = "01," + Server.myPseudonimo + "," + DateTime.Now.ToString("MM/dd/yyyy HH:mm:ss") +",00," + newPseu + ", Ek1(00:TimeStamp:newPseu)";
                    hiloCliente = new Thread(new ThreadStart(IniciarCliente));
                    hiloCliente.Start();
                    DButiles.cambiamyPseu(Server.myPseudonimo, newPseu);
                    Server.myPseudonimo = DButiles.recuperamyPseu();
                    Formulario.Invoke(Formulario.myDelegate5, new Object[] { newPseu });
                    vecesPseu = 0;
                    cambioPseu = 50 + randomNumber.Next(100);
                    Thread.Sleep(1000 * (5 + randomNumber.Next(10)));
                }
            }
        }