Esempio n. 1
0
        private void HandleCheckConnectedMessage(ClientPacket protocolPacket, IClientProtocol protocol, IPAddress address)
        {
            var port = int.Parse(protocol.DataJson);

            if (!CConstant.UdpListenerPort.Contains(port))
            {
                return;
            }

            var client = Clients.FirstOrDefault(x => x.Id == protocolPacket.Id) as CClient;

            var responseProtocol = new ServerProtocol();

            if (client == null || client.State != ClientState.Accepted)
            {
                responseProtocol.Message = ServerMessage.Refuse;
            }
            else
            {
                responseProtocol.Message = ServerMessage.Accept;
                client.Port = port;
            }

            SendServerPacket(ServerPacketType.Protocol, JsonConvert.SerializeObject(responseProtocol), address, port);
        }
Esempio n. 2
0
        private void HandleRequestConnectMessage(ClientPacket protocolPacket, IClientProtocol protocol, IPAddress address)
        {
            var client = Clients.FirstOrDefault(x => x.Id == protocolPacket.Id) as CClient;

            if (client != null)
            {
                return;
            }

            var port = int.Parse(protocol.DataJson);

            if (!CConstant.UdpListenerPort.Contains(port))
            {
                return;
            }

            client = new CClient()
            {
                Id      = protocolPacket.Id,
                Name    = protocolPacket.Name,
                Port    = port,
                Address = address,
            };

            client.CalculateChecksum();
            client.Refresh();

            lock (Clients)
            {
                Clients.Add(client);
            }

            RunOnUiThread(delegate
            {
                ClientNew?.Invoke(client);

                ClientsChanged?.Invoke(Clients);

                var generator   = new Random();
                var r           = generator.Next(1, 1000000);
                var passcode    = r.ToString().PadLeft(6, '0');
                client.Passcode = passcode;
            });

            var responseProtocol = new ServerProtocol()
            {
                Message = ServerMessage.RequestPasscode
            };

            SendServerPacket(ServerPacketType.Protocol, JsonConvert.SerializeObject(responseProtocol), client);

            RunOnUiThread(delegate
            {
                client.State = ClientState.WaitingPasscode;
            });
        }
Esempio n. 3
0
        /// <inheritdoc />
        public bool Start(IClientProtocol clientProtocol, string name, IPAddress ipAdress, int port)
        {
            _name           = name;
            _clientProtocol = clientProtocol;

            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            IPEndPoint ipEndPoint = new IPEndPoint(ipAdress, port);

            try
            {
                _socket.Connect(ipEndPoint);

                _isConnected = true;

                _thread = new Thread(OnReceiveMessageFromServer);
                _thread.Start();
            }
            catch (SocketException)
            {
                _isConnected = false;
            }

            return(_isConnected);
        }
Esempio n. 4
0
 public ClientProtocolController(IClientProtocol clientProtocol)
 {
     _clientProtocol = clientProtocol;
 }