Example #1
0
        private void HandleIncomingData()
        {
            while (!isShutdownRequested)
            {
                byte[] buffer   = new byte[1024];
                int    received = receiveSocket.Receive(buffer);

                KNet_Packet packet = KNet.DeserializePacket(buffer, 0, received);

                if (packet.isReliable)
                {
                    KNet_Packet freeReliable = new KNet_Packet()
                    {
                        isReliable = false,
                        packetID   = packet.packetID,
                        rpcName    = "INTERNAL_FREE-RELIABLE",
                    };

                    SendPacket(freeReliable);
                }

                Console.WriteLine("Received Packet {0}", packet.rpcName);

                KNet.ExecutePacket(packet);
            }

            sendSocket.Close();
            sendSocket.Dispose();
            receiveSocket.Close();
            receiveSocket.Dispose();
        }
Example #2
0
        private void HandleIncomingData()
        {
            while (!isShutdownRequested)
            {
                byte[]     buffer     = new byte[1024];
                EndPoint   endPoint   = new IPEndPoint(IPAddress.Any, port);
                int        received   = receiveSocket.ReceiveFrom(buffer, ref endPoint);
                IPEndPoint ipEndPoint = (IPEndPoint)endPoint;

                KNet_Packet packet = KNet.DeserializePacket(buffer, 0, received);
                packet.origin = ipEndPoint.Address.GetAddressBytes();

                if (packet.isReliable)
                {
                    KNet_Packet freeReliable = new KNet_Packet()
                    {
                        rpcName    = "INTERNAL_FREE-RELIABLE",
                        packetID   = packet.packetID,
                        isReliable = false,
                        rpcTarget  = packet.origin
                    };

                    SendPacket(packet);
                }

                Console.WriteLine("Received Packet {0} from {1}", packet.rpcName, ipEndPoint.Address);

                ParsePacket(packet);
            }

            receiveSocket.Close();
            receiveSocket.Dispose();
            sendSocket.Close();
            sendSocket.Dispose();
        }
Example #3
0
File: KNet.cs Project: isaveu/KNet
        private async void LoginUser(Socket socket)
        {
            if (KNet.debug)
            {
                Console.WriteLine("Received connection from {0}", socket.RemoteEndPoint);
            }

            await Task.Run(() =>
            {
                byte[] buffer = new byte[1024];
                int received  = socket.Receive(buffer);

                KNet_Packet packet = KNet.DeserializePacket(buffer, 0, received);
                if (packet.rpcName == KNet.INTERNAL_LOGIN && (activeUsers.Count < maxPlayers || maxPlayers == 0))
                {
                    KNet_User user = new KNet_User(packet.rpcArgs[0] as string, packet.rpcArgs[1] as string,
                                                   DateTime.UtcNow.Ticks, socket);
                    if (KNet.debug)
                    {
                        Console.WriteLine("{0} is logging in with ID {1}", socket.RemoteEndPoint, user.id);
                    }
                    loginQueue.Enqueue(user);
                }
                else
                {
                    socket.Disconnect(false);
                }
            });
        }
Example #4
0
File: KNet.cs Project: isaveu/KNet
        private void HandleIncomingData()
        {
            while (!isShutdownRequested)
            {
                while (client.Available <= 0)
                {
                    ;
                }

                byte[]      buffer   = new byte[1024];
                int         received = client.GetStream().Read(buffer, 0, buffer.Length);
                KNet_Packet packet   = KNet.DeserializePacket(buffer, 0, received);
                if (KNet.debug)
                {
                    Console.WriteLine("Received Packet {0}", packet.rpcName);
                }

                if (packet.rpcName == KNet.INTERNAL_LOGIN_SUCCESS)
                {
                    //Set account data
                    continue;
                }

                KNet.ExecutePacket(packet);
            }

            client.Close();
        }
Example #5
0
File: KNet.cs Project: isaveu/KNet
        private void HandleIncomingData()
        {
            while (!isShutdownRequested)
            {
                byte[] buffer = new byte[1024];
                if (listener.Pending())
                {
                    Socket socket = listener.AcceptSocket();
                    LoginUser(socket);
                }

                foreach (KNet_User u in activeUsers.ToArray())
                {
                    if (u.socket.Available > 0)
                    {
                        int         received = u.socket.Receive(buffer);
                        KNet_Packet packet   = KNet.DeserializePacket(buffer, 0, received);
                        packet.sender = u.id;
                        if (KNet.debug)
                        {
                            Console.WriteLine("Received packet {0} from {1}", packet.rpcName, u.username);
                        }

                        if (packet.rpcName == KNet.INTERNAL_LOGOUT)
                        {
                            activeUsers.Remove(u);
                            u.socket.Disconnect(false);
                            continue;
                        }
                        else if (packet.rpcName == KNet.INTERNAL_PING)
                        {
                            KNet_Packet ping = new KNet_Packet()
                            {
                                rpcName = KNet.INTERNAL_PING
                            };
                            SendPacket(ping);
                        }

                        ParsePacket(packet);
                    }
                }
            }

            listener.Stop();
        }