public void readUntil() {
		try {
			// String line;
			while (in.readUnsignedByte() == 0) {// gets 1 byte starter
				int control;
				int size;
				byte[] data = null;
				control = in.readUnsignedShort();// gets 2 byte control
				size = in.readUnsignedShort();// gets 2 byte size of data(may
												// increase size later..only
												// supports 65.5 kbs of data
												// transfer per command)

				// System.out.println("["+control+"] size "+size+" data: "+data);
				if (size > 0) {
					data = new byte[size];
				}
				in.readFully(data, 0, size);// gets data

				if (in.readUnsignedByte() == 255) {// gets 1 byte ender, if data
													// too big, this wont be
													// reached then theres error
					doCommand(new DataPacket(control, data));
					if(size > 0){//just for debugging purposes
						if(control < 1000){
							System.out.println("[" + control + "] "+ new String(data, "ISO-8859-1"));
						}
						else{System.out.println("[" + control + "] <Object> "+size+" bytes");}
					}
					else{System.out.println("[" + control + "]");}
				}
				else {
					System.out.println("****ERROR**NO COMMAND ENDER****");
				}
				return;
			}
		} catch (SocketException e) {
			System.out.println("Connection Socket Error\n");
			SERVERRUNNING = false;
			if(!MANUELDC){
				Framework.Window.createIFrame("popup", new String[] {"<html><b>You were Disconnected from eMafia</b></html>","exit","html" });
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return;
	}