Exemplo n.º 1
0
 public CoCRemoteClient(CoCServer server, Socket connection, NetworkManagerAsyncSettings settings)
 {
     _server = server;
     Connection = connection;
     Avatar = new Avatar();
     NetworkManager = new NetworkManagerAsync(connection, settings);
     NetworkManager.MessageReceived += OnMessageReceived;
 }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class.
        /// </summary>
        /// <param name="connection"><see cref="Socket"/> to wrap.</param>
        /// <exception cref="ArgumentNullException"/>
        public NetworkManagerAsync(Socket connection)
        {
            if (connection == null)
                throw new ArgumentNullException("connection");

            Connection = connection;
            Settings = new NetworkManagerAsyncSettings(); // default settings
            CoCCrypto = new CoCCrypto();
            ReceiveEventPool = new SocketAsyncEventArgsPool(25);
            SendEventPool = new SocketAsyncEventArgsPool(25);
            SetAsyncOperationPools();

            StartReceive(ReceiveEventPool.Pop());
        }
Exemplo n.º 3
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class.
        /// </summary>
        /// <param name="connection"><see cref="Socket"/> to wrap.</param>
        /// <exception cref="ArgumentNullException"/>
        public NetworkManagerAsync(Socket connection)
        {
            if (connection == null)
            {
                throw new ArgumentNullException("connection");
            }

            Connection       = connection;
            Settings         = new NetworkManagerAsyncSettings(); // default settings
            CoCCrypto        = new CoCCrypto();
            ReceiveEventPool = new SocketAsyncEventArgsPool(25);
            SendEventPool    = new SocketAsyncEventArgsPool(25);
            SetAsyncOperationPools();

            StartReceive(ReceiveEventPool.Pop());
        }
Exemplo n.º 4
0
        /// <summary>
        /// Initializes a new instance of the <see cref="NetworkManagerAsync"/> class
        /// with the specified <see cref="Socket"/> and <see cref="NetworkManagerAsyncSettings"/>.
        /// </summary>
        /// <param name="connection"><see cref="Socket"/> instance.</param>
        /// <param name="settings">
        /// <see cref="NetworkManagerAsyncSettings"/> instance for better <see cref="SocketAsyncEventArgs"/>
        /// object management.
        /// </param>
        /// <exception cref="ArgumentNullException"><paramref name="connection"/> is null.</exception>
        /// <exception cref="ArgumentNullException"><paramref name="settings"/> is null.</exception>
        public NetworkManagerAsync(Socket connection, NetworkManagerAsyncSettings settings)
        {
            if (connection == null)
                throw new ArgumentNullException("connection");
            if (settings == null)
                throw new ArgumentNullException("settings");

            Connection = connection;
            Settings = settings;
            Statistics = new NetworkManagerAsyncStatistics();
            Crypto = new Crypto8(MessageDirection.Client, Crypto8.StandardKeyPair); //TODO: intiate as server

            _receivePool = Settings.ReceivePool;
            _sendPool = Settings.SendPool;

            StartReceive(_receivePool.Pop());
        }
Exemplo n.º 5
0
        public CoCServer()
        {
            _settings = new NetworkManagerAsyncSettings(50, 50);
            _listener = new Socket(SocketType.Stream, ProtocolType.Tcp);
            _acceptPool = new SocketAsyncEventArgsPool(100);

            AvatarManager = new AvatarManager();
            DataManager = new DataManager();
            Clients = new List<CoCRemoteClient>();
            MessageHandlers = new Dictionary<ushort, MessageHandler>();
            CommandHandlers = new Dictionary<int, CommandHandler>();

            LoginMessageHandlers.RegisterLoginMessageHandlers(this);
            InGameMessageHandlers.RegisterInGameMessageHandlers(this);
            BuildingCommandHandlers.RegisterBuildingCommandHandlers(this);

            AvatarManager.LoadAllAvatars();
        }
Exemplo n.º 6
0
        public CoCProxyClient(Socket client, Socket server, NetworkManagerAsyncSettings settings)
        {
            // client connection is initiated with standard keys because we are acting as the server
            ClientConnection = new NetworkManagerAsync(client, settings);
            ClientConnection.MessageReceived += ClientReceived;

            var publicKeyS = Utils.BytesToString(ClientConnection.Crypto.KeyPair.PublicKey);
            var privateKeyS = Utils.BytesToString(ClientConnection.Crypto.KeyPair.PrivateKey);
            Console.WriteLine("Acting as server with standard \n\tpublickey: {0} \n\tprivatekey: {1}", publicKeyS, privateKeyS);

            // server connection is initiated with generated keys because we are acting as the client
            ServerConnection = new NetworkManagerAsync(server, settings);
            ServerConnection.Crypto = new Crypto8(MessageDirection.Server);
            ServerConnection.Crypto.UpdateSharedKey(Crypto8.SupercellPublicKey); // use supercell's public key
            ServerConnection.MessageReceived += ServerReceived;

            var publicKeyC = Utils.BytesToString(ServerConnection.Crypto.KeyPair.PublicKey);
            var privateKeyC = Utils.BytesToString(ServerConnection.Crypto.KeyPair.PrivateKey);
            Console.WriteLine("Acting as client with generated \n\tpublickey: {0} \n\tprivatekey: {1}", publicKeyC, privateKeyC);
        }
Exemplo n.º 7
0
 public CoCProxy()
 {
     Connections = new List<CoCProxyClient>();
     Settings = new NetworkManagerAsyncSettings();
     _listener = new Socket(SocketType.Stream, ProtocolType.Tcp);
 }