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(); }
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(); }
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); } }); }
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(); }
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(); }