/// <summary> /// Конструктор коммуникатора /// </summary> public Communicator() { // TO DO Переделать под конфигуратор localIP = IPAddress.Parse(Settings.Default.localIP); remoteIP = IPAddress.Parse(Settings.Default.remoteIP); localReceivingPort = Convert.ToInt16(Settings.Default.localReceivingPort); remoteReceivingPort = Convert.ToInt16(Settings.Default.remoteReceivingPort);; localSendingPort = Convert.ToInt16(Settings.Default.localSendingPort); remoteSendingPort = Convert.ToInt16(Settings.Default.remoteSendingPort); hostType = (HostType)Enum.Parse(typeof(HostType), Settings.Default.hostType); ExchangePeriod = Convert.ToInt16(Settings.Default.netExchangePeriod); communicationMode = (CommunicationMode)Enum.Parse(typeof(CommunicationMode), Settings.Default.communicationMode); localApplicationName = "Source"; remoteApplicationName = "Target"; state = CommunicatorState.stoped; transceiver = new UDPTransceiver(localIP, localReceivingPort, localSendingPort, remoteIP, remoteSendingPort, remoteSendingPort); // Создаем пустой список параметров. Parameters = new List <Parameter>(); // Создаем поток для работы обменника if (hostType == HostType.Slave) { NetworkThread = new Thread(ListenNetworkSlave); } else { NetworkThread = new Thread(ListenNetworkMaster); } InputParameterChanged += (s, e) => hasInputParameterChanged = true; }
/// <summary> /// Запускает в работу обменник /// </summary> public void Start() { if (transceiver == null) { transceiver = new UDPTransceiver(localIP, localReceivingPort, remoteIP, remoteSendingPort); } ReceiverThread = new Thread(ListenNetwork); state = CommunicatorState.active; ReceiverThread.IsBackground = true; if (!ReceiverThread.IsAlive) { ReceiverThread.Start(); } }