private void ClientSocket_ConnectCompleted(object sender, TcpCompletedEventArgs e) { if (!e.Error) { Console.WriteLine($"Connected to {(IPEndPoint)e.Data}"); PacketProtocol = new PacketProtocol(ClientSocket); PacketProtocol.PacketArrived += PacketProtocol_PacketArrived; PacketProtocol.Start(); Console.WriteLine("Sending client info..."); PacketProtocol.SendPacket(ClientSocket, new Packet { Content = World.LocalPlayer, Type = PacketType.PLAYER_INFO }); World.AddPlayer(World.LocalPlayer); ConnectedToServer?.Invoke(ClientSocket.RemoteEndPoint.ToString(), World.LocalPlayer.Name); _connected = true; } else { CriticalErrorOccured($"Произошла критическая ошибка!\n{((Exception)e.Data).Message}"); } }
private void ServerSocket_AcceptCompleted(object sender, TcpCompletedEventArgs e) { ServerSocket.ClientAcceptAsync(); var client = (GameTcpServerConnection)e.Data; var protocol = new PacketProtocol(client); var context = new ClientContext(); context.PacketProtocol = protocol; context.Connected = true; clients.Add(client, context); protocol.PacketArrived += Protocol_PacketArrived; //client.SendCompleted += Client_SendCompleted; protocol.Start(); Console.WriteLine($"Client {client.RemoteEndPoint} connected to server."); }