private void onConnect(IAsyncResult ar) { try { socket.BeginAccept(onConnect, null); } catch { Status = EthernetListener.ConnectionStatus.Disconnected; } Socket worker = null; try { worker = socket.EndAccept(ar); ListenerClient client = new ListenerClient(worker, LocalPort, base.Retry, base.TimeOut); System.Threading.Thread.Sleep(1000); PLC plc = PLCFactory.GetPLC(client, 0); if (OnConnectionAccepted != null) { OnConnectionAccepted(plc); } } catch { if (worker != null) { worker.Close(); } } }
/// <summary> /// Closes the Socket connection and releases all associated resources. /// </summary> public override void Disconnect() { if (base.QueueCount != 0) { return; } try { socket.Close(); Status = EthernetListener.ConnectionStatus.Disconnected; } catch { } }
internal void Listen() { lock (lockObj) { if (Status == EthernetListener.ConnectionStatus.Disconnected || socket == null) { try { listen(); Status = EthernetListener.ConnectionStatus.Listening; } catch { throw new ComDriveExceptions( "Failed binding local port " + m_LocalPort.ToString() + ". Please check that the port is not in use", ComDriveExceptions.ComDriveException.PortInUse); } } } }