private bool Update() { handler.OnUpdate(); bool connection_ok = true; while (c.Client.Available > 0 && connection_ok) { byte id = readNextByte(); connection_ok = processPacket(id); } return(connection_ok); }
/// <summary> /// Read data from the network. Should be called on a separate thread. /// </summary> /// <returns></returns> private bool Update() { handler.OnUpdate(); if (c.Client == null || !c.Connected) { return(false); } try { while (c.Client.Available > 0) { int packetID = 0; byte[] packetData = new byte[] { }; readNextPacket(ref packetID, ref packetData); handlePacket(packetID, packetData); } } catch (SocketException) { return(false); } return(true); }
/// <summary> /// Read data from the network. Should be called on a separate thread. /// </summary> /// <returns>FALSE if an error occured, TRUE otherwise.</returns> private bool Update() { handler.OnUpdate(); if (!socketWrapper.IsConnected()) { return(false); } try { while (socketWrapper.HasDataAvailable()) { int packetID = 0; List <byte> packetData = new List <byte>(); ReadNextPacket(ref packetID, packetData); HandlePacket(packetID, new List <byte>(packetData)); } } catch (SocketException) { return(false); } catch (NullReferenceException) { return(false); } return(true); }
/// <summary> /// Read and data from the network. Should be called on a separate thread. /// </summary> /// <returns></returns> private bool Update() { handler.OnUpdate(); if (c.Client == null || !c.Connected) { return(false); } int id = 0, size = 0; try { while (c.Client.Available > 0) { size = readNextVarInt(); //Packet size id = readNextVarInt(); //Packet ID switch (id) { case 0x00: byte[] keepalive = new byte[4] { 0, 0, 0, 0 }; Receive(keepalive, 0, 4, SocketFlags.None); byte[] keepalive_packet = concatBytes(getVarInt(0x00), keepalive); byte[] keepalive_tosend = concatBytes(getVarInt(keepalive_packet.Length), keepalive_packet); Send(keepalive_tosend); break; case 0x02: handler.OnTextReceived(ChatParser.ParseText(readNextString())); break; case 0x38: string name = readNextString(); bool online = readNextBool(); short ping = readNextShort(); Guid FakeUUID = new Guid(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(name)).Take(16).ToArray()); if (online) { handler.OnPlayerJoin(FakeUUID, name); } else { handler.OnPlayerLeave(FakeUUID); } break; case 0x3A: int autocomplete_count = readNextVarInt(); string tab_list = ""; for (int i = 0; i < autocomplete_count; i++) { autocomplete_result = readNextString(); if (autocomplete_result != "") { tab_list = tab_list + autocomplete_result + " "; } } autocomplete_received = true; tab_list = tab_list.Trim(); if (tab_list.Length > 0) { ConsoleIO.WriteLineFormatted("ยง8" + tab_list, false); } break; case 0x40: handler.OnConnectionLost(ChatBot.DisconnectReason.InGameKick, ChatParser.ParseText(readNextString())); return(false); default: readData(size - getVarInt(id).Length); //Skip packet break; } } } catch (SocketException) { return(false); } return(true); }