public class Connection extends Thread {
public Socket socket; // @jve:decl-index=0:
public DataInputStream in;
public PrintStream out; // @jve:decl-index=0
public boolean doRun = true;
byte[] input = new byte[2];
ByteBuffer bInput = ByteBuffer.allocate(2);
ByteBuffer[] bbOutput = new ByteBuffer[] { ByteBuffer.allocate(2),ByteBuffer.allocate(1),ByteBuffer.allocate(400)};
ByteBuffer bbLength = ByteBuffer.allocate(1);
public Connection(int port, String hostname) throws IOException
{
// Erzeuge einen Socket und baue eine Verbindung
// zum angegebenen Host und der angegebenen Portnummer auf.
try
{
this.socket = new Socket(hostname, port);
in = new DataInputStream(socket.getInputStream());
out = new PrintStream(socket.getOutputStream());
} catch (IOException e)
{
System.err.println("Verbindung nicht möglich");
}
}
public void run()
{
while(doRun)
{
try
{
while (in.read (input)>0)
{
bInput.put(input);
bInput.flip();
short zeichen = 0;
try
{
zeichen = bInput.getShort();
}
catch(java.nio.BufferUnderflowException e) // Zeichen < 127
{
try
{
zeichen = (short)bInput.get();
}
catch(Exception ee) // Keine Zahl?!
{
zeichen = 0;
}
}
if(zeichen!=0)
{
try
{
byte[] flag = new byte[1];
byte[] content = new byte[zeichen-1];
ByteBuffer[] dataBufs = {ByteBuffer.allocate(1), ByteBuffer.allocate(zeichen-1)};
while(in.read (flag)>0)
{
}
while(in.read(content)>0)
{
}
dataBufs[0].put(flag);
dataBufs[0].flip();
//TODO Was mit machen
byte bBefehl = dataBufs[0].get();
String sParameter = EncodeDecode.Byte2ASCII(dataBufs[1]);
if(zeichen==-1 || zeichen == 0)
break;
}
catch(IllegalArgumentException e)
{
System.err.println(e.toString());
}
}
}
}
catch(IOException e)
{}
}
}