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); } }
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); } } }
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); }
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); } }