/// <summary> /// Handle a socket accept /// </summary> private void AcceptSocket(IAsyncResult result) { State = EDispatcherState.AcceptingSocket; var sock = mListener.EndAcceptSocket(result); //Queue the next accept BeginAcceptingSockets(); //Fire the event handler for sockets if (SocketConnected != null) { SocketConnected(sock); } else { //boot the user if nobody is listening sock.Disconnect(false); } }
/// <summary> /// Stop listening for connections /// </summary> public void Stop() { mListener.Stop(); State = EDispatcherState.Stopped; }
/// <summary> /// Start an async socket accept /// </summary> private void BeginAcceptingSockets() { State = EDispatcherState.Listening; mListener.BeginAcceptSocket(AcceptSocket, null); }
/// <summary> /// Create a tcp listener bound to the specified address and port /// </summary> public TcpDispatcher(IPAddress bindAddress, ushort port) { State = EDispatcherState.Stopped; mListener = new TcpListener(bindAddress, port); }