public void StopListener() { lock (runningLock) { if (!running) { return; } targetConnectionPool.StopDaemon(); try { listener.Close(); running = false; } catch (SocketException e) { if (OnExceptionRaised != null) { OnExceptionRaised(this, new ExceptionRaisedEventArgs { E = e, Explaination = "Closing Error" }); } } stateEventChanged.WaitOne(); } if (OnListenerStateChanged != null) { ListenerStateChangedEventArgs args = new ListenerStateChangedEventArgs(); OnListenerStateChanged(this, args); } }
public void StartListener() { lock (runningLock) { if (running) { return; } if (targetConnctionGuide == null) { throw new Exception("Target socket manager not set"); } listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { listener.Bind(new IPEndPoint(IPAddress.Any, port)); listener.Listen(10); running = true; } catch (SocketException e) { if (OnExceptionRaised != null) { OnExceptionRaised(this, new ExceptionRaisedEventArgs { E = e, Explaination = "Bind error. Port in use?" }); } return; } TargetConnectionPool.StartDaemon(); } if (OnListenerStateChanged != null) { ListenerStateChangedEventArgs args = new ListenerStateChangedEventArgs(); OnListenerStateChanged(this, args); } while (running) { Socket clientSocket = null; try { clientSocket = listener.Accept(); } catch { } if (clientSocket != null) { BiConnection client = new BiConnection(this, clientSocket); client.TargetConnctionGuide = TargetConnctionGuide; client.TargetConnectionPool = TargetConnectionPool; client.TargetResponseValidator = targetResponseValidator; client.BeginClientReceive(); } } stateEventChanged.Set(); }
private void DoListenerStateChanged(object sender, ListenerStateChangedEventArgs args) { try { this.BeginInvoke(new Del1(UpdateGinnayStatus), new object[] { sender, args }); } catch (Exception) { } }
private void UpdateGinnayStatus(object sender, ListenerStateChangedEventArgs args) { StringBuilder sb = new StringBuilder(); sb.Append("Ginnay is "); if (ins.Listener.Running) { sb.Append("running on port ").Append(ins.Listener.Port); btnStop.Enabled = true; btnStart.Enabled = false; } else { sb.Append("stopped"); btnStart.Enabled = true; btnStop.Enabled = false; } lblStatus.Text = sb.ToString(); Log(lblStatus.Text); }