public override MpxListener MakeListener(MpxServerTransport transport, IPEndPoint listenEndPoint, MpxSocketReceiveAction<MpxServerTransport> socketReceiveAction) { return new MpxWinListener(transport, listenEndPoint, socketReceiveAction); }
protected internal override ServerTransport OpenServerEndpoint(ServerEndPoint epoint) { var cfg = ConfigNode.NavigateSection(CONFIG_SERVER_TRANSPORT_SECTION); if (!cfg.Exists) cfg = ConfigNode; var ipep = MpxBinding.ToIPEndPoint(epoint.Node); var transport = new MpxServerTransport(this, epoint, ipep.Address, ipep.Port); transport.Configure(cfg); transport.Start(); return transport; }
internal MpxWinListener(MpxServerTransport transport, IPEndPoint listenEndPoint, MpxSocketReceiveAction<MpxServerTransport> socketReceiveAction) : base(transport, listenEndPoint, socketReceiveAction) { m_Active = true; m_TcpListener = new TcpListener(listenEndPoint); m_TcpListener.ExclusiveAddressUse = true; m_TcpListener.Start(); m_Thread = new Thread(listenerThreadSpin); m_Thread.Name = THREAD_NAME; m_Thread.Start(); }