Exemple #1
0
        public IList InteraccionAB(ref Terminal datosA, bool interno)
        {
            Conexion cxn = new Conexion();
            IList objs = new List<object>();
            try
            {
                TR.ordenAckE = 0;
                TR.ordenMsgNackE = 0;
                TransacManager.ProtoConfig.NACK_ENV = NackEnv.SINERROR;

                datosA.Tipo = TransacManager.ProtoConfig.BASE_CONFIG.TerminalModelo;

                Enviar(ConstructorMenEnv.crearA_Logueo(datosA, UltimaConexionOptima, TransacManager.ProtoConfig.LOCAL_IP), EnumPaquete.DATOS, TR.ordenMsgNackE);

                TR.ordenMsgNackE++;
                Errorof errOf = new Errorof();

                //Recibo Mensaje B y envío ACK o NACK
                do
                {
                    bytes = new byte[ProtocoloConfig.TamBuffer];
                    objs = Recibir(bytes, 2, 0, "B");

                    //atrapa errores de recepción
                    if (objs.Count > 1 && !(objs[0] is string))
                    {
                        byte[] ACK = { };
                        Enviar(ACK, EnumPaquete.ACK, TR.ordenAckE);
                    }
                    else
                    {
                        break;
                    }

                }
                while (TransacManager.ProtoConfig.NACK_ENV != NackEnv.SINERROR);

                if (objs == null || objs.Count == 0 )
                {
                        throw new Exception("Lista de objetos(objs) regreso vacía de Recibir()");
                }
                else if (objs[0] is string)
                {
                    Error err = MensajeNack(objs[0]);
                    objs.Insert(0, err);
                }
                else if (objs[0].GetType() == typeof(Error) && ((Error)objs[0]).CodError != 0)
                {
                    foreach (Object obj in objs)
                    {
                        if (obj is PRN)
                        {
                            cxn.crear_XMLprn(((PRN)obj).Nombre1, ((PRN)obj).Nombre2, ((PRN)obj).Nombre3, ((PRN)obj).Port1, ((PRN)obj).Port2, ((PRN)obj).Port3,
                                ((PRN)obj).Telefono1, ((PRN)obj).Telefono2, ((PRN)obj).Telefono3, TransacManager.ProtoConfig.CONFIG);
                        }
                        else if(obj is Error)
                            ((Error)objs[0]).Estado = 0;
                    }
                    return objs;
                }
                else if (objs[0] is Error && ((Error)objs[0]).CodError == 0 && objs[1] is Agente)
                {
                    Agente agente = (Agente)objs[1];
                    Agente agen = new Agente(agente, out errOf);
                    if (errOf.Error != 0)
                    {
                        ((Error)objs[0]).CodError = (uint)errOf.Error;
                        ((Error)objs[0]).Descripcion = errOf.Mensaje;
                        ((Error)objs[0]).Estado = 2;
                    }
                    PRN prn = (PRN)objs[2];

                    Terminal terminal = (Terminal)objs[3];
                    datosA.indiceTelecarga = terminal.indiceTelecarga;
                    datosA.longArchivo = terminal.longArchivo;
                    datosA.correo = terminal.correo;
                    datosA.defLengConc1 = terminal.defLengConc1;
                    datosA.defLengConc2 = terminal.defLengConc2;
                    datosA.statusConc = terminal.statusConc;

                    if (interno)
                    {
                        cxn.crear_XMLprn(prn.Nombre1, prn.Nombre2, prn.Nombre3, prn.Port1, prn.Port2, prn.Port3, prn.Telefono1, prn.Telefono2, prn.Telefono3, TransacManager.ProtoConfig.CONFIG);
                        Desconectar(interno);
                        return objs;
                    }
                    else
                    {
                        cxn.crear_XMLprn(prn.Nombre1, prn.Nombre2, prn.Nombre3, prn.Port1, prn.Port2, prn.Port3, prn.Telefono1, prn.Telefono2, prn.Telefono3, TransacManager.ProtoConfig.CONFIG);
                    }
                }

                return objs;
            }

            catch (Exception ex)
            {
                Error err = new Error();
                err.CodError = (int)ErrComunicacion.LOGIN;
                err.Descripcion = "Ocurrió un error en la comunicación al intentar enviar credenciales."; //Definir que descripción pasar con Jorge
                err.Estado = 0;

                LogBMTP.LogMessage("Excepción: " + err.CodError + " " + err.Descripcion, lvlLogExcepciones, TimeStampLog);
                LogBMTP.LogMessage("Excepción: " + ex.Message, lvlLogDebug, TimeStampLog);

                objs.Insert(0, err);
                if (objs.Count > 1)
                    objs.RemoveAt(1);

                return objs;
            }
        }
Exemple #2
0
        private Error Crea_PRN_TelefonoSerie(Terminal ter)
        {
            string nombre1, nombre2, nombre3, port1, port2, port3, tel1, tel2, tel3;

            Conexion cxn = new Conexion();
            Error cxnErr = new Error();

            try
            {
                #region // PROCESO DE CONEXIÓN
                bool sale = false;
                int fusible = 0;
                while (sale == false) // INTENTA HASTA CONECTAR CON PRN
                {
                    string res = cxn.Leer_XMLprn(out nombre1, out nombre2, out nombre3, out port1, out  port2, out port3, out tel1, out tel2, out tel3, TransacManager.ProtoConfig.CONFIG);

                    if (res == null) // EXISTE PRN
                    {
                        #region // INTENTA CONECTAR CON PRN
                        string[] nom = { nombre1, nombre2, nombre3 };
                        string[] por = { port1, port2, port3 };
                        string[] tel = { tel1, tel2, tel3 };

                        for (int j = 0; j < 3; j++)
                        {
                            try
                            {
                                if (nom[j] != null)
                                {
                                    sale = LogInTelefono(nom[j], tel[j]);
                                }
                            }
                            catch (Exception e)
                            {
                                LogBMTP.LogMessage("TELEFONO: Excepción al intentar con PRN:Nombre " + j.ToString(), lvlLogExcepciones, TimeStampLog);
                                LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                            }
                            if (sale == true)
                            {
                                UltimaConexionOptima[0] = nom[j];
                                UltimaConexionOptima[1] = por[j];
                                UltimaConexionOptima[2] = tel[j];
                                break;
                            }
                            else
                                LogBMTP.LogMessage("TELEFONO: Intento con PRN: Nombre " + nom[j] + " falló.", lvlLogCxn, TimeStampLog);
                        }
                        #endregion

                        if (fusible >= 2 && sale == false)
                        {
                            sale = true;
                            cxnErr.CodError = (int)ErrComunicacion.CONEX_SERIAL;
                            cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación. Se superaron los intentos de conexión.";
                            cxnErr.Estado = 0;
                            break;
                        }

                        if (sale == false)
                        {
                            #region // FALLÓ PRN, INTENTA CON CONFIG.BIN
                            cxn.Borrar_XMLprn(TransacManager.ProtoConfig.CONFIG);

                            try
                            {
                                sale = LogInTelefono(TransacManager.ProtoConfig.CONFIG.Host, TransacManager.ProtoConfig.CONFIG.Telefono);
                            }
                            catch (Exception e)
                            {
                                LogBMTP.LogMessage("TELEFONO: Excepción al intentar con valores por defecto.", lvlLogExcepciones, TimeStampLog);
                                LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                            }

                            if (sale == false)
                            {
                                LogBMTP.LogMessage("TELEFONO: Intento valores por defecto: Nombre " + TransacManager.ProtoConfig.CONFIG.Host + " falló.", lvlLogCxn, TimeStampLog);
                                cxnErr.CodError = (int)ErrComunicacion.CONEX_SERIAL;
                                cxnErr.Descripcion = "Error de conexión. No pudo establecerse una comunicación con los valores del PRN, ni los por defecto.";
                                cxnErr.Estado = 0;

                                CierraPuertoSerie();

                                sale = true;
                            }
                            else
                            {
                                UltimaConexionOptima[0] = TransacManager.ProtoConfig.CONFIG.DefaultServer.ToString();
                                UltimaConexionOptima[1] = TransacManager.ProtoConfig.CONFIG.Port.ToString();
                                UltimaConexionOptima[2] = TransacManager.ProtoConfig.CONFIG.Telefono;

                                Comunicacion cm = new Comunicacion(TransacManager.ProtoConfig.BASE_CONFIG, TransacManager.ProtoConfig.CONFIG);
                                IList rdo = cm.InteraccionAB(ref ter, true);

                                if (rdo[0] is Error)
                                {
                                    if (((Error)rdo[0]).CodError != 0)
                                    {
                                        cxnErr = (Error)rdo;
                                        sale = true;
                                    }
                                    else
                                    {
                                        CierraPuertoSerie();
                                        cxnErr = AbrePuertoTelefono();
                                        if (cxnErr.CodError == 0)
                                            sale = false;
                                        else
                                        {
                                            CierraPuertoSerie();
                                            return cxnErr;
                                        }
                                    }
                                }
                                else
                                {
                                    cxnErr.CodError = (int)ErrComunicacion.CXN_NO_GENERA_PRN;
                                    cxnErr.Descripcion = "Error de conexión. No se pudo obtener el PRN.";
                                    cxnErr.Estado = 0;
                                    CierraPuertoSerie();
                                    return cxnErr;
                                }
                                fusible++;
                            }
                            #endregion
                        }
                    }
                    else // NO EXISTE PRN
                    {
                        #region // INTENTA CONECTAR CON CONFIG.BIN
                        try
                        {
                            sale = LogInTelefono(TransacManager.ProtoConfig.CONFIG.Host, TransacManager.ProtoConfig.CONFIG.Telefono);
                        }
                        catch (Exception e)
                        {
                            LogBMTP.LogMessage("TELEFONO: Excepción al intentar con valores por defecto.", lvlLogExcepciones, TimeStampLog);
                            LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                        }

                        if (sale == false)
                        {
                            LogBMTP.LogMessage("TELEFONO: Intento valores por defecto: Nombre " + TransacManager.ProtoConfig.CONFIG.Host + " falló.", lvlLogCxn, TimeStampLog);
                            cxnErr.CodError = (int)ErrComunicacion.CONEX_SERIAL;
                            cxnErr.Descripcion = "Error de conexión. No pudo establecerse una comunicación con los valores del PRN, ni los por defecto.";
                            cxnErr.Estado = 0;
                            CierraPuertoSerie();
                            sale = true;
                        }
                        else
                        {
                            UltimaConexionOptima[0] = TransacManager.ProtoConfig.CONFIG.DefaultServer.ToString();
                            UltimaConexionOptima[1] = TransacManager.ProtoConfig.CONFIG.Port.ToString();
                            UltimaConexionOptima[2] = TransacManager.ProtoConfig.CONFIG.Telefono;

                            Comunicacion cm = new Comunicacion(TransacManager.ProtoConfig.BASE_CONFIG, TransacManager.ProtoConfig.CONFIG);
                            IList rdo = cm.InteraccionAB(ref ter, true);
                            if (rdo[0] is Error)
                            {
                                if (((Error)rdo[0]).CodError != 0)
                                {
                                    cxnErr = (Error)rdo;
                                    sale = true;
                                }
                                else
                                {
                                    CierraPuertoSerie();
                                    cxnErr = AbrePuertoTelefono();
                                    if (cxnErr.CodError == 0)
                                        sale = false;
                                    else
                                    {
                                        CierraPuertoSerie();
                                        return cxnErr;
                                    }
                                }
                            }
                            else
                            {
                                cxnErr.CodError = (int)ErrComunicacion.CXN_NO_GENERA_PRN;
                                cxnErr.Descripcion = "Error de conexión. No se pudo obtener el PRN.";
                                cxnErr.Estado = 0;
                                CierraPuertoSerie();
                                return cxnErr;
                            }
                            fusible++;
                        }
                        #endregion

                        if (fusible >= 2 && sale == false)
                        {
                            sale = true;
                            cxnErr.CodError = (int)ErrComunicacion.CONEXION;
                            cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación. Se superaron los intentos de conexión.";
                            cxnErr.Estado = 0;

                            CierraPuertoSerie();
                            break;
                        }
                    }
                }
                #endregion

                if (cxnErr.CodError != 0)
                    LogBMTP.LogMessage("Error de conexión: " + cxnErr.CodError + "\n" + " Descripción: " + cxnErr.Descripcion + "\n", lvlLogError, TimeStampLog);

                return cxnErr;
            }
            catch (Exception ex)
            {
                cxnErr.CodError = (int)ErrComunicacion.CONEX_SERIALex;
                cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación.";
                cxnErr.Estado = 0;

                LogBMTP.LogMessage("Excepción: " + cxnErr.CodError + " " + cxnErr.Descripcion, lvlLogExcepciones, TimeStampLog);
                LogBMTP.LogMessage("Excepción: " + ex.ToString(), lvlLogExcepciones, TimeStampLog);

                return cxnErr;
            }
        }
Exemple #3
0
        //Ethernet
        private Error Crea_PRN_Socket(Terminal ter)
        {
            string nombre1, nombre2, nombre3, port1, port2, port3, tel1, tel2, tel3;

            Conexion cxn = new Conexion();
            Error cxnErr = new Error();
            IPHostEntry ipHost;
            IPAddress ipAddr;

            try
            {
                #region // PROCESO DE CONEXIÓN

                IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());

                for (int i = 0; i < ipHostInfo.AddressList.Length; i++)
                {
                    TransacManager.ProtoConfig.LOCAL_IP = ipHostInfo.AddressList[i]; //----------- Cambia de 1 elemento a 2.
                    if (TransacManager.ProtoConfig.LOCAL_IP.AddressFamily == AddressFamily.InterNetwork) break;
                }

                IPEndPoint localEndPoint = new IPEndPoint(TransacManager.ProtoConfig.LOCAL_IP, TransacManager.ProtoConfig.LOCAL_PORT);

                bool sale = false;
                int fusible = 0;
                while (sale == false) // INTENTA HASTA CONECTAR CON PRN
                {
                    SocketPermission permission = new SocketPermission(PermissionState.Unrestricted
                        //NetworkAccess.Connect,    // Connection permission
                        //TransportType.Tcp,        // Defines transport types
                        //"",                       // Gets the IP addresses
                        //SocketPermission.AllPorts // All ports
                        );
                    //SocketPermissionAttribute per = new SocketPermissionAttribute(SecurityAction.
                    permission.Demand();

                    string res = cxn.Leer_XMLprn(out nombre1, out nombre2, out nombre3, out port1, out  port2, out port3, out tel1, out tel2, out tel3, TransacManager.ProtoConfig.CONFIG);

                    if (res == null && TransacManager.ProtoConfig.CON_CICLO_PRN) // EXISTE PRN
                    {
                        #region // INTENTA CONECTAR CON PRN
                        string[] nom = { nombre1, nombre2, nombre3 };
                        string[] por = { port1, port2, port3 };
                        string[] tel = { tel1, tel2, tel3 };

                        for (int j = 0; j < 3; j++)
                        {
                            try
                            {
                                ipHost = Dns.GetHostEntry(nom[j]);
                                if (ipHost is IPHostEntry)
                                {
                                    ipAddr = null;
                                    for (int i = 0; i < ipHost.AddressList.Length; i++)
                                    {
                                        ipAddr = ipHost.AddressList[i]; //----------- Cambia de 1 elemento a 2.
                                        if (ipAddr.AddressFamily == AddressFamily.InterNetwork) break;
                                    }

                                    LogBMTP.LogMessage("Resulve DNS: " + nom[j] + " - " + ipAddr, lvlLogCxn, TimeStampLog);

                                    ipEndPoint = new IPEndPoint(ipAddr, Convert.ToInt32(por[j]));

                                    sender = new Socket(
                                    ipAddr.AddressFamily,// Specifies the addressing scheme
                                    SocketType.Stream,   // The type of socket
                                    ProtocolType.Tcp     // Specifies the protocols
                                    );

                                    sender.NoDelay = false;   // Using the Nagle algorithm

                                    sender.ReceiveTimeout = ProtocoloConfig.TimeoutSocket;
                                    sender.SendTimeout = ProtocoloConfig.TimeoutSocket;

                                    sender.Bind(localEndPoint);

                                    sender.Connect(ipEndPoint);
                                }
                            }
                            catch (Exception e)
                            {
                                ipHost = null;
                                LogBMTP.LogMessage(" Intento con " + nom[j] + "(" + j + ") falló. \n" + e.Message + " " + e.InnerException, lvlLogDebug, TimeStampLog);
                                if (sender != null)
                                    sender.Close();
                            }
                            if (sender != null && sender.Connected == true)
                            {
                                UltimaConexionOptima[0] = nom[j];
                                UltimaConexionOptima[1] = por[j];
                                UltimaConexionOptima[2] = tel[j];
                                sale = true;
                                break;
                            }
                        }
                        #endregion

                        if (fusible >= 2 && sale == false)
                        {
                            sale = true;
                            cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                            cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación. Se superaron los intentos de conexión.";
                            cxnErr.Estado = 0;
                            break;
                        }

                        if (sender == null || sender.Connected != true)
                        {
                            #region // FALLÓ PRN, INTENTA CON CONFIG.BIN
                            cxn.Borrar_XMLprn(TransacManager.ProtoConfig.CONFIG);

                            try
                            {
                                if (!PuertoDisponible(localEndPoint.Port))
                                {

                                    cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                                    cxnErr.Descripcion = "Error de conexión. Puerto default ocupado.";
                                    cxnErr.Estado = 0;
                                    return cxnErr;
                                }

                                ipAddr = TransacManager.ProtoConfig.CONFIG.DefaultServer;

                                ipEndPoint = new IPEndPoint(ipAddr, TransacManager.ProtoConfig.CONFIG.Port);

                                sender = new Socket(
                                ipAddr.AddressFamily,// Specifies the addressing scheme
                                SocketType.Stream,   // The type of socket
                                ProtocolType.Tcp     // Specifies the protocols
                                );

                                sender.NoDelay = false;   // Using the Nagle algorithm

                                sender.ReceiveTimeout = ProtocoloConfig.TimeoutSocket;
                                sender.SendTimeout = ProtocoloConfig.TimeoutSocket;

                                sender.Bind(localEndPoint);

                                sender.Connect(ipEndPoint);
                            }
                            catch (Exception e)
                            {
                                ipHost = null;
                                LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                            }

                            if (sender.Connected != true)
                            {
                                cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                                cxnErr.Descripcion = "Error de conexión. No pudo establecerse una comunicación con los valores del PRN, ni los por defecto.";
                                cxnErr.Estado = 0;
                                sale = true;
                            }
                            else
                            {
                                UltimaConexionOptima[0] = TransacManager.ProtoConfig.CONFIG.DefaultServer.ToString();
                                UltimaConexionOptima[1] = TransacManager.ProtoConfig.CONFIG.Port.ToString();
                                UltimaConexionOptima[2] = TransacManager.ProtoConfig.CONFIG.Telefono;

                                LogBMTP.LogMessage("CONEXIÓN EXITOSA CON VALORES DEFAULT:\n ", lvlLogCxn, TimeStampLog);
                                LogBMTP.LogMessage("HOST: IP " + ipEndPoint.Address + " Port " + ipEndPoint.Port + "\n", lvlLogCxn, TimeStampLog);
                                LogBMTP.LogMessage("BMTP: IP " + ((IPEndPoint)sender.LocalEndPoint).Address + " Port " + ((IPEndPoint)sender.LocalEndPoint).Port + "\n", lvlLogCxn, TimeStampLog);

                                Comunicacion cm = new Comunicacion(TransacManager.ProtoConfig.BASE_CONFIG, TransacManager.ProtoConfig.CONFIG, true);
                                cm.sender = sender;
                                IList rdo = cm.InteraccionAB(ref ter, true);
                                if (rdo[0] is Error)
                                {
                                    if (((Error)rdo[0]).CodError != 0)
                                    {
                                        cxnErr = (Error)rdo;
                                        sale = true;
                                    }
                                }
                                else
                                {
                                    cxnErr.CodError = (int)ErrComunicacion.CXN_NO_GENERA_PRN;
                                    cxnErr.Descripcion = "Error de conexión. No se pudo obtener el PRN.";
                                    cxnErr.Estado = 0;
                                }
                                fusible++;
                            }
                            #endregion
                        }
                    }
                    else // NO EXISTE PRN
                    {
                        #region // INTENTA CONECTAR CON CONFIG.BIN
                        try
                        {
                            if (!PuertoDisponible(TransacManager.ProtoConfig.CONFIG.Port) || !PuertoDisponible(localEndPoint.Port))
                            {
                                cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                                cxnErr.Descripcion = "Error de conexión. Puerto default ocupado.";
                                cxnErr.Estado = 0;
                                return cxnErr;
                            }

                            ipAddr = TransacManager.ProtoConfig.CONFIG.DefaultServer;

                            ipEndPoint = new IPEndPoint(ipAddr, TransacManager.ProtoConfig.CONFIG.Port);

                            sender = new Socket(
                            ipAddr.AddressFamily,// Specifies the addressing scheme
                            SocketType.Stream,   // The type of socket
                            ProtocolType.Tcp     // Specifies the protocols
                            );

                            sender.NoDelay = false;   // Using the Nagle algorithm

                            sender.ReceiveTimeout = ProtocoloConfig.TimeoutSocket;
                            sender.SendTimeout = ProtocoloConfig.TimeoutSocket;

                            sender.Bind(localEndPoint);

                            sender.Connect(ipEndPoint);

                            //sender.Send(DataConverter.Pack("^$8", "Holaaaaaaaaa <EOF>"));
                        }
                        catch (Exception e)
                        {
                            ipHost = null;
                            LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                        }
                        if (sender.Connected != true)
                        {
                            cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                            cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación con los valores por defecto.";
                            cxnErr.Estado = 0;
                            sale = true;
                        }
                        else
                        {
                            UltimaConexionOptima[0] = TransacManager.ProtoConfig.CONFIG.DefaultServer.ToString();
                            UltimaConexionOptima[1] = TransacManager.ProtoConfig.CONFIG.Port.ToString();
                            UltimaConexionOptima[2] = TransacManager.ProtoConfig.CONFIG.Telefono;

                            LogBMTP.LogMessage("CONEXIÓN EXITOSA CON VALORES DEFAULT:\n ", lvlLogCxn, TimeStampLog);
                            LogBMTP.LogMessage("HOST: IP " + ipEndPoint.Address + " Port " + ipEndPoint.Port + "\n", lvlLogCxn, TimeStampLog);
                            LogBMTP.LogMessage("BMTP: IP " + ((IPEndPoint)sender.LocalEndPoint).Address + " Port " + ((IPEndPoint)sender.LocalEndPoint).Port + "\n", lvlLogCxn, TimeStampLog);

                            if (TransacManager.ProtoConfig.CON_CICLO_PRN)
                            {
                                Comunicacion cm = new Comunicacion(TransacManager.ProtoConfig.BASE_CONFIG, TransacManager.ProtoConfig.CONFIG, true);
                                cm.sender = sender;

                                IList rdo = cm.InteraccionAB(ref ter, true);
                                if (rdo[0] is Error)
                                {
                                    if (((Error)rdo[0]).CodError != 0)
                                    {
                                        cxnErr = (Error)rdo[0];
                                        sale = true;
                                    }
                                }
                                else
                                {
                                    cxnErr.CodError = (int)ErrComunicacion.CXN_NO_GENERA_PRN;
                                    cxnErr.Descripcion = "Error de conexión. No se pudo obtener el PRN.";
                                    cxnErr.Estado = 0;
                                }
                            }
                            fusible++;
                        }
                        #endregion

                        if (fusible >= 2 && sale == false)
                        {
                            sale = true;
                            cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKETex;
                            cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación. Se superaron los intentos de conexión.";
                            cxnErr.Estado = 0;
                            break;
                        }
                    }
                }
                #endregion

                if (cxnErr.CodError != 0)
                    LogBMTP.LogMessage("Error de conexión: " + cxnErr.CodError + "\n" + " Descripción: " + cxnErr.Descripcion + "\n", lvlLogCxn, TimeStampLog);
                else
                {
                    LogBMTP.LogMessage("CONEXIÓN EXITOSA:\n ", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("HOST: IP " + ipEndPoint.Address + " Port " + ipEndPoint.Port + "\n", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("BMTP: IP " + ((IPEndPoint)sender.LocalEndPoint).Address + " Port " + ((IPEndPoint)sender.LocalEndPoint).Port + "\n", lvlLogCxn, TimeStampLog);
                }

                return cxnErr;
            }
            catch (Exception ex)
            {
                cxnErr.CodError = (int)ErrComunicacion.CONEXIONex;
                cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación.";
                cxnErr.Estado = 0;

                LogBMTP.LogMessage("Excepción: " + cxnErr.CodError + " " + cxnErr.Descripcion, lvlLogExcepciones, TimeStampLog);
                LogBMTP.LogMessage("Excepción: " + ex.ToString(), lvlLogExcepciones, TimeStampLog);

                return cxnErr;
            }
        }
Exemple #4
0
        private Error Crea_PRN_Socket_TEST(Terminal ter)
        {
            //string nombre1, nombre2, nombre3, port1, port2, port3, tel1, tel2, tel3;

            Conexion cxn = new Conexion();
            Error cxnErr = new Error();
            // IPHostEntry ipHost;
            IPAddress ipAddr;
            IPAddress ipAddrLocal;

            try
            {

                IPHostEntry ipHostInfo = Dns.GetHostEntry(Dns.GetHostName());
                ipAddrLocal = null;

                for (int i = 0; i < ipHostInfo.AddressList.Length; i++)
                {
                    ipAddrLocal = ipHostInfo.AddressList[i]; //----------- Cambia de 1 elemento a 2.
                    if (ipAddrLocal.AddressFamily == AddressFamily.InterNetwork) break;
                }

                IPEndPoint localEndPoint = new IPEndPoint(ipAddrLocal, TransacManager.ProtoConfig.LOCAL_PORT);

                SocketPermission permission = new SocketPermission(PermissionState.Unrestricted
                    //NetworkAccess.Connect,    // Connection permission
                    //TransportType.Tcp,        // Defines transport types
                    //"",                       // Gets the IP addresses
                    //SocketPermission.AllPorts // All ports
                    );
                //SocketPermissionAttribute per = new SocketPermissionAttribute(SecurityAction.
                permission.Demand();

                #region // INTENTA CONECTAR CON CONFIG.BIN
                try
                {
                    ipAddr = TransacManager.ProtoConfig.CONFIG.DefaultServer;

                    ipEndPoint = new IPEndPoint(ipAddr, TransacManager.ProtoConfig.CONFIG.Port);

                    sender = new Socket(
                    ipAddr.AddressFamily,// Specifies the addressing scheme
                    SocketType.Stream,   // The type of socket
                    ProtocolType.Tcp     // Specifies the protocols
                    );

                    sender.NoDelay = false;   // Using the Nagle algorithm

                    sender.Bind(localEndPoint);

                    sender.Connect(ipEndPoint);

                    //sender.Send(DataConverter.Pack("^$8", "Holaaaaaaaaa <EOF>"));
                }
                catch (Exception e)
                {
                    //   ipHost = null;
                    LogBMTP.LogMessage(e.Message + " \n" + e.InnerException, lvlLogDebug, TimeStampLog);
                }
                if (sender.Connected != true)
                {
                    cxnErr.CodError = (int)ErrComunicacion.CXN_SOCKET;
                    cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación con los valores por defecto.";
                    cxnErr.Estado = 0;
                }
                else
                {
                    UltimaConexionOptima[0] = TransacManager.ProtoConfig.CONFIG.DefaultServer.ToString();
                    UltimaConexionOptima[1] = TransacManager.ProtoConfig.CONFIG.Port.ToString();
                    UltimaConexionOptima[2] = TransacManager.ProtoConfig.CONFIG.Telefono;

                    LogBMTP.LogMessage("CONEXIÓN EXITOSA CON VALORES DEFAULT:\n ", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("HOST: IP " + ipEndPoint.Address + " Port " + ipEndPoint.Port + "\n", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("BMTP: IP " + ((IPEndPoint)sender.LocalEndPoint).Address + " Port " + ((IPEndPoint)sender.LocalEndPoint).Port + "\n", lvlLogCxn, TimeStampLog);
                }
                #endregion

                if (cxnErr.CodError != 0)
                    LogBMTP.LogMessage("Error de conexión: " + cxnErr.CodError + "\n" + " Descripción: " + cxnErr.Descripcion + "\n", lvlLogError, TimeStampLog);
                else
                {
                    LogBMTP.LogMessage("CONEXIÓN EXITOSA:\n ", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("HOST: IP " + ipEndPoint.Address + " Port " + ipEndPoint.Port + "\n", lvlLogCxn, TimeStampLog);
                    LogBMTP.LogMessage("BMTP: IP " + ((IPEndPoint)sender.LocalEndPoint).Address + " Port " + ((IPEndPoint)sender.LocalEndPoint).Port + "\n", lvlLogCxn, TimeStampLog);
                }

                return cxnErr;
            }
            catch (Exception ex)
            {
                cxnErr.CodError = (int)ErrComunicacion.CONEXIONex;
                cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación.";
                cxnErr.Estado = 0;

                LogBMTP.LogMessage("Excepción: " + cxnErr.CodError + " " + cxnErr.Descripcion, lvlLogExcepciones, TimeStampLog);
                LogBMTP.LogMessage("Excepción: " + ex.ToString(), lvlLogExcepciones, TimeStampLog);

                return cxnErr;
            }
        }
Exemple #5
0
        //Dialup
        private Error CreaVPNxTel()
        {
            Error cxnErr = new Error();

            string telDefault = TransacManager.ProtoConfig.CONFIG.Telefono;// "08006665807";
            string prefijo = TransacManager.ProtoConfig.CONFIG.CxnTelPrefijo;// "11000";
            string separador = "w";
            if (String.IsNullOrEmpty(prefijo))
            {
                prefijo = "";
                separador = "";
            }
            string modemDefault = TransacManager.ProtoConfig.CONFIG.CxnTelNombreModem;// "Conexant USB CX93010 ACF Modem";
            string user = TransacManager.ProtoConfig.CONFIG.CxnTelUser;// "bmtp";
            string pass = TransacManager.ProtoConfig.CONFIG.CxnTelPass;// "bmtp";
            uint timeout = TransacManager.ProtoConfig.CONFIG.CxnTelTimeout;

            string nombre1, nombre2, nombre3, port1, port2, port3, tel1, tel2, tel3;

            Conexion cxn = new Conexion();

                string rdo = cxn.Leer_XMLprn(out nombre1, out nombre2, out nombre3, out port1, out  port2, out port3, out tel1, out tel2, out tel3, TransacManager.ProtoConfig.CONFIG);
                string[] tel = new string[4];

                if (rdo == null)
                {
                    tel[0] = tel1;
                    tel[1] = tel2;
                    tel[2] = tel3;
                    tel[3] = telDefault;
                }
                else
                    tel[0] = telDefault;

                string path = RasPhoneBook.GetPhoneBookPath(RasPhoneBookType.User);

                using (RasPhoneBook pbk = new RasPhoneBook())
                {
                    pbk.Open(path);

                    // Find the device that will be used to dial the connection.
                    RasDevice device = RasDevice.GetDevices().Where(u => u.Name == modemDefault && u.DeviceType == RasDeviceType.Modem).First();

                    RasEntry entry;

                    ICollection<RasConnection> conecciones = RasConnection.GetActiveConnections();

                    if (conecciones.Count > 0)
                    {
                        RasConnection conn1 = conecciones.Where(o => o.EntryName == "BMTP Dial up").First();
                        conn1.HangUp();
                    }

                    pbk.Entries.Clear();

                    try
                    {
                        entry = RasEntry.CreateDialUpEntry("BMTP Dial up", prefijo + separador + tel[0], device);

                        if (rdo == null)
                        {
                            entry.AlternatePhoneNumbers.Add(prefijo + separador + tel[1]);
                            entry.AlternatePhoneNumbers.Add(prefijo + separador + tel[2]);
                            entry.AlternatePhoneNumbers.Add(prefijo + separador + telDefault);
                            LogBMTP.LogMessage("Se leyó PRN. Telefonos alternativos cargados.", lvlLogCxn, TimeStampLog);
                        }
                        else
                        {
                            LogBMTP.LogMessage("No hay PRN. Intentará conectar con número telefónico por defecto.", lvlLogCxn, TimeStampLog);
                        }

                        //entry.Options.ModemLights = true;
                        //entry.Options.ShowDialingProgress = true;
                        //entry.Options.TerminalBeforeDial = true;
                        //entry.Options.TerminalAfterDial = true;

                        pbk.Entries.Add(entry);

                        using (RasDialer dialer = new RasDialer())
                        {
                            dialer.Dispose();
                            dialer.EntryName = "BMTP Dial up";
                            dialer.PhoneBookPath = path;
                            dialer.Credentials = new NetworkCredential(user, pass);

                            dialer.Timeout = (int)timeout;
                            dialer.Options.DisableReconnect = false;
                            dialer.Options.SetModemSpeaker = true;

                            dialer.Dial();
                        }
                    }
                    catch (Exception e)
                    {
                        pbk.Entries.Clear();
                        LogBMTP.LogMessage(e.ToString(), lvlLogExcepciones, TimeStampLog);

                        cxnErr.CodError = (int)ErrComunicacion.CXN_TELEFONOex;
                        cxnErr.Descripcion = "Error de conexión. No puede establecerse una comunicación por telefono.";
                        cxnErr.Estado = 0;
                        LogBMTP.LogMessage("Excepción: " + cxnErr.CodError + " " + cxnErr.Descripcion, lvlLogExcepciones, TimeStampLog);
                        LogBMTP.LogMessage("Excepción: " + e.ToString(), lvlLogExcepciones, TimeStampLog);
                    }
                }

                return cxnErr;
        }