private static void OnConnected(PortalClient c) { PingTest(c); c.Dispose(); }
private static void OnDisconnectNotify(PortalClient client, PortalPacketReader p) { client.Dispose(); }
protected override void OnStart() { try { ToConsole("Listener: Binding: {0}", Portal.Server); _Server.LingerState.Enabled = false; #if !MONO _Server.ExclusiveAddressUse = false; #endif _Server.Bind(Portal.Server); _Server.Listen(8); ToConsole("Listener: Bound: {0}", Portal.Server); } catch (Exception e) { ToConsole("Listener: Failed: {0}", e.Message); Dispose(); return; } try { do { if (_Server != null && _Server.Poll(-1, SelectMode.SelectRead)) { var s = _Server.Accept(); var client = new PortalClient(s); lock (_ClientsLock) { _Clients.Add(client); ToConsole("{0} Connected [{1} Active]", client, _Clients.Count); } try { var thread = new Thread(client.Start); thread.Start(); while (!thread.IsAlive) { Thread.Sleep(1); } } catch { lock (_ClientsLock) { _Clients.Remove(client); ToConsole("{0} Disconnected [{1} Active]", client, _Clients.Count); } try { client.Dispose(); } catch { } } } Thread.Sleep(10); }while (CheckAlive()); } catch (Exception e) { ToConsole("Listener: Failed: {0}", e.Message); Dispose(); } }
private static void OnDisconnectNotify(PortalClient client, PortalPacketReader p) { client.Dispose(); }
protected override void OnStart() { try { ToConsole("Listener: Binding: {0}", Portal.Server); _Server.LingerState.Enabled = false; #if !MONO _Server.ExclusiveAddressUse = false; #endif _Server.Bind(Portal.Server); _Server.Listen(8); ToConsole("Listener: Bound: {0}", Portal.Server); } catch (Exception e) { ToConsole("Listener: Failed: {0}", e.Message); Dispose(); return; } try { do { if (_Server != null && _Server.Poll(-1, SelectMode.SelectRead)) { var s = _Server.Accept(); var client = new PortalClient(s); lock (_ClientsLock) { _Clients.Add(client); ToConsole("{0} Connected [{1} Active]", client, _Clients.Count); } try { var thread = new Thread(client.Start); thread.Start(); while (!thread.IsAlive) { Thread.Sleep(1); } } catch { lock (_ClientsLock) { _Clients.Remove(client); ToConsole("{0} Disconnected [{1} Active]", client, _Clients.Count); } try { client.Dispose(); } catch { } } } Thread.Sleep(10); } while (CheckAlive()); } catch (Exception e) { ToConsole("Listener: Failed: {0}", e.Message); Dispose(); } }