Ejemplo n.º 1
0
        public TCPIP_Channel(int nPort, string strIP_Address, int nMachine_ID = -1, int nAnalyseTypeID = -1, int nType = -1, TCPIP_Helper.TCPIPHelper parent = null)
        {
            this.nType = nType;
            this.parent = parent;
            this.nPort = nPort;

            // get the TerminationString if exist
            strTerminationString = myHC.GetTerminationStringFromTCPIPConfigurationByMachine_ID(nMachine_ID);

            analyser = new TCPIP.InterfaceAnalyse(nMachine_ID, this, nAnalyseTypeID);

            if (nType == 0)
            {
                tcpip_Server = new TCPIP_Server(nPort, nMachine_ID, nAnalyseTypeID, analyser, strTerminationString, parent);
            }
            if (nType == 1)
            {
                tcpip_Client = new TCPIP_Client(nPort, strIP_Address, nMachine_ID, nAnalyseTypeID, analyser, strTerminationString, parent);
            }
        }
Ejemplo n.º 2
0
        private void SetupTCPIPChannels()
        {
            lock (LabManagerLock)
            {
                DataSet ds_TCPIPChannel = new DataSet();
                DataTable dt_TCPIPChannel = new DataTable();
                int nTCPIPChannnel = 0;

                //Type=0 => Server, Type=1 => Client
                string strSQL_Statement = "Select Port,IP_Address,Machine_ID,AnalyseType_ID,Type FROM TCPIP_configuration WHERE Activate=1";
                ds_TCPIPChannel = myHC.GetDataSetFromSQLCommand(strSQL_Statement);
                if (ds_TCPIPChannel != null)
                {
                    if (ds_TCPIPChannel.Tables.Count > 0)
                    {
                        dt_TCPIPChannel = ds_TCPIPChannel.Tables[0];
                        TcpipChannelArray = new TCPIP_Channel[dt_TCPIPChannel.Rows.Count];

                        foreach (DataRow dr_TCPIPChannels in dt_TCPIPChannel.Rows)
                        {
                            try
                            {
                                int nPort = (int)dr_TCPIPChannels["Port"];
                                int nMachine_ID = (int)dr_TCPIPChannels["Machine_ID"];
                                int nAnalyseTypeID = (int)dr_TCPIPChannels["AnalyseType_ID"];
                                string strIPAddress = dr_TCPIPChannels["IP_Address"].ToString();
                                int nType = (int)dr_TCPIPChannels["Type"];
                                TCPIP_Helper.TCPIPHelper tcp_Helper = new TCPIP_Helper.TCPIPHelper(this);
                                // load the TCPIP server objects
                                // (LabManager parent, int nPort,string strIP_Address, int nMachine_ID = -1, int nAnalyseTypeID = -1, int nType=-1)
                                TcpipChannelArray[nTCPIPChannnel] = new TCPIP_Channel(nPort, strIPAddress, nMachine_ID, nAnalyseTypeID, nType, tcp_Helper);
                                TCPIPHashTable.Add(nMachine_ID, nTCPIPChannnel);
                                nTCPIPChannnel++;
                                string strTCPIPType = "client";
                                if (nType == 0) { strTCPIPType = "server"; }
                                WriteTCPIPLoggEntry((int)Definition.ThorLogWindows.ROUTING,
                                    " loading TCPIP channel on port: " + nPort + " for station: `" + myHC.GetNameFromID((int)Definition.SQLTables.MACHINES, nMachine_ID) + "` as " + strTCPIPType
                                    , (int)Definition.Message.D_MESSAGE);
                            }
                            catch (Exception ex)
                            {
                                WriteTCPIPLoggEntry((int)Definition.ThorLogWindows.ERROR, ex.ToString(), (int)Definition.Message.D_ALARM);
                            }
                        }
                    }
                    else { InsertLoggingEntry((int)Definition.ThorLogWindows.ERROR, "no configuration entries found in table 'TCPIP_configuration'", (int)Definition.Message.D_ALARM); }
                }
                else { InsertLoggingEntry((int)Definition.ThorLogWindows.ERROR, "no configuration entries found in table 'TCPIP_configuration' dataset is null", (int)Definition.Message.D_ALARM); }
            }
        }
Ejemplo n.º 3
0
        public TCPIP_Server(int nPort, int nMachine_ID = -1, int nAnalyseTypeID = -1, TCPIP.InterfaceAnalyse analyser = null, string strTerminationString = null, TCPIP_Helper.TCPIPHelper parent = null)
        {
            this.nMachine_ID = nMachine_ID;

            tcpListener = new TcpListener(IPAddress.Any, nPort);

            listenThread = new Thread(new ThreadStart(ListenForClients));
            listenThread.Name = "TCP/IP-Server Thread";
            listenThread.Start();

               // tcpListener = new TcpListener(IPAddress.Any, nPort);

            this.parent = parent;
            this.analyser = analyser;
            this.nPort = nPort;
            this.strTerminationString = strTerminationString;

            // Set the Interval to 5 seconds (5000 milliseconds).
            TCPIPServerTimer.Interval = 5000;
            TCPIPServerTimer.Enabled = true;
            TCPIPServerTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);
        }
Ejemplo n.º 4
0
        public TCPIP_Client(int nPort, string strServername, int nMachine_ID = -1, int nAnalyseTypeID = -1, TCPIP.InterfaceAnalyse analyser = null, string strTerminationString = null, TCPIP_Helper.TCPIPHelper parent = null)
        {
            this.parent = parent;
            this.strServername = strServername;
            this.nPort = nPort;
            this.strTerminationString = strTerminationString;
            this.analyser = analyser;

            /* create a new client object */
            myClient = new TcpClient();

            /* Vital: Create listening thread and assign it to ListenThread() */
             tListen = new Thread(new ThreadStart(ListenThread));

            /* Start listening thread */
            tListen.Start();

            // Hook up the Elapsed event for the timer.
            TCPIPReconnectTimer.Elapsed += new ElapsedEventHandler(OnReconnetTimedEvent);
            // Set the Interval to 10 seconds (10000 milliseconds).
            TCPIPReconnectTimer.Interval = 10000;
            TCPIPReconnectTimer.Enabled = true;

            // check every n seconds if the channel is alive
            TCPIPCheckTimer.Elapsed += new ElapsedEventHandler(OnCheckTimedEvent);
            // Set the Interval to n seconds (n*1000 milliseconds).
            TCPIPCheckTimer.Interval = 1000;
            TCPIPCheckTimer.Enabled = true;

            // try to connect, if servername and port is given
            if (strServername.Length > 0 && nPort > 0)
            {
                Connect();
            }
            else
            {
                WriteLoggEntry((int)Definition.ThorLogWindows.COMMUNICATION, "no servername and/or no port number available " , (int)Definition.Message.D_ALARM);
            }
        }