private void HandleRakNetMessage(IPEndPoint senderEndpoint, OpenConnectionRequest2 incoming) { PlayerNetworkSession session; lock (_playerSessions) { DateTime trash; if (!_connectionAttemps.TryRemove(senderEndpoint, out trash)) { Log.WarnFormat("Unexpected connection request packet from {0}. Probably a resend.", senderEndpoint.Address); return; } if (_playerSessions.TryGetValue(senderEndpoint, out session)) { // Already connecting, then this is just a duplicate if (session.State == ConnectionState.Connecting /* && DateTime.UtcNow < session.LastUpdatedTime + TimeSpan.FromSeconds(2)*/) { return; } Log.InfoFormat("Unexpected session from {0}. Removing old session and disconnecting old player.", senderEndpoint.Address); Player oldPlayer = session.Player; if (oldPlayer != null) { oldPlayer.Disconnect("Reconnecting.", false); } _playerSessions.TryRemove(session.EndPoint, out session); } session = new PlayerNetworkSession(null, senderEndpoint) { State = ConnectionState.Connecting, LastUpdatedTime = DateTime.UtcNow, Mtuize = incoming.mtuSize }; _playerSessions.TryAdd(senderEndpoint, session); } Player player = PlayerFactory.CreatePlayer(this, senderEndpoint, incoming.mtuSize); player.ClientGuid = incoming.clientGuid; player.NetworkSession = session; session.Player = player; var reply = OpenConnectionReply2.CreateObject(); reply.serverGuid = 12345; reply.clientendpoint = senderEndpoint; reply.mtuSize = incoming.mtuSize; reply.doSecurityAndHandshake = new byte[1]; var data = reply.Encode(); reply.PutPool(); TraceSend(reply); SendData(data, senderEndpoint); }
public void SendOpenConnectionRequest2() { var packet = new OpenConnectionRequest2() { systemadress = new byte[4], mtuSize = _mtuSize, //clientUdpPort = (short) _listener.Client. }; var data = packet.Encode(); TraceSend(packet); SendData(data); }
public void SendOpenConnectionRequest2() { _clientGuid = new Random().Next(); var packet = new OpenConnectionRequest2() { clientendpoint = _clientEndpoint, mtuSize = _mtuSize, clientGuid = _clientGuid, }; var data = packet.Encode(); TraceSend(packet); SendData(data); }
public void SendOpenConnectionRequest2() { var packet = new OpenConnectionRequest2() { systemadress = new byte[4], mtuSize = _mtuSize }; var data = packet.Encode(); SendData(data); }