All pastes #622203 Raw Edit

Untitled

public text v1 · immutable
·published 2007-07-16 18:39 UTC
rendered paste body
import java.io.DataInputStream;
import java.io.InputStream;
import java.util.Random;
import javax.microedition.io.SocketConnection;

public class ChatInThread extends Thread {
	InputStream is;
	DataInputStream dis;
	ChatSession session;

	private byte[] pkg;

	public ChatInThread(InputStream is, ChatSession session) {
		this.session = session;
		try {
			dis = new DataInputStream(is);
		} catch (Exception e) {
		}
	}

	public void run() {
		while(true){
	 //       System.out.println("PACKAGE");
			session.inPackage(readPacket());
			try{Thread.sleep(100);}catch(Exception e){}

		}
	}

	public byte[] readPkg() {
		byte[] pkg = null;
		try {
			pkg = new byte[is.read()&0xff];
			pkg[0] = (byte) pkg.length;
			for (int i = 1; i < pkg.length; i++) {
				pkg[i] = (byte) is.read();
			}
		} catch (Exception e) {
		}
		return pkg;
	}
	
	public byte[] readPacket() {
		byte[] packet=null;
		try {
                        while (dis.available() < 2);
			int packetLen = getPacketSize(dis.readByte(),dis.readByte());
                        while (dis.available() < packetLen-2);

		//	System.out.println("LEN "+packetLen);
			packet = new byte[packetLen];
			packet[0] = (byte)packetLen;
			for (int i = 2; i < packetLen; i++) {
				packet[i] = dis.readByte();
			}
			
		} catch (Exception e) {
			System.out.println("CzatIn "+ e);
		}
		return packet;
	}
	
	public  int getPacketSize(byte a, byte b){
		String sa = Integer.toHexString((int)(a&0xff));
		String sb = Integer.toHexString((int)(b&0xff));
		if(sa.length()==1)
			sa="0"+sa;
		if(sb.length()==1)
			sb="0"+sb;
		
		return Integer.parseInt(sb+sa,16);
	}
}