public override void OnServerConnect(NetworkConnection conn) { CallbackLog($"OnServerConnect({conn})"); base.OnServerConnect(conn); ServerConnectEvent?.Invoke(this, EventArgs.Empty); }
public TCPRawServer( IPAddress _listenIp, ushort _listenPort, int _backLg, int headerSize, PacketCalculateEvent _calculatePacketSize, ServerConnectEvent _connectHandler = null, ServerDisconnectEvent _disconnectHandler = null, ServerOnReceivePacketEvent _recvPacketHandler = null, int _maxConnections = 4096, int _maxPacketSize = 64 * 1024, int _maxPacketsPerStep = 32, double _sendRecvRatio = 3 / 1, bool _noCheckDDos = false, int _serverTickMicro = 5000, int _connRetry = 5000) { this.listenIp = _listenIp; this.listenPort = _listenPort; this.backLog = _backLg; this.packetHeaderSize = headerSize; this.maxClients = _maxConnections; this.maxPacketSize = _maxPacketSize; this.maxPacketsPerStep = _maxPacketsPerStep; this.noCheckDDos = _noCheckDDos; this.serverTickMicro = _serverTickMicro; this.sendRecvRatio = _sendRecvRatio; this.connRetryTimeout = _connRetry; this.calculatePacketSize = _calculatePacketSize; this.onNewClientEv = _connectHandler; this.onNewPacketEv = _recvPacketHandler; this.onDisconnectClientEv = _disconnectHandler; if (this.calculatePacketSize == null) { throw new ArgumentNullException("PacketCalculateEvent is null"); } toReadSockets = new List <Socket>(maxClients); toWriteSockets = new List <Socket>(maxClients); clientAssocList = new Dictionary <Socket, int>(maxClients); commandsQueue = new ConcurrentQueue <serverCommand>(); secondCommandsQueue = new Queue <serverCommand>(); sendStreamSize = (int)Math.Ceiling((maxPacketSize * maxPacketsPerStep) * sendRecvRatio); if (sendStreamSize <= maxPacketSize) { sendStreamSize = maxPacketSize + 1; } clients = new client[maxClients]; freeClientSlots = new Stack <int>(); Online = 0; for (int i = 0; i < maxClients; ++i) { clients[i] = null; freeClientSlots.Push(i); } serverStarted = false; workerThread = null; }