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); }
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; }); }
/// <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); }
public ClientProtocolController(IClientProtocol clientProtocol) { _clientProtocol = clientProtocol; }