hier mal die funktionen zum senden und empfangen:
[code=Java]
public static boolean send(INonBlockingConnection nbc, DataPacket packet) {
try {
if (packet == null) {
return false;
}
ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(packet);
nbc.write(bout.toByteArray());
nbc.write(DELIMITER);
oos.close();
bout.close();
} catch (BufferOverflowException e) {
return false;
} catch (IOException e) {
System.err
.println("you try to send an Object (packet.getData()), which is not Serializable: "
+ packet);
}
return true;
}
public static DataPacket receive(INonBlockingConnection nbc)
throws IOException {
if (!nbc.isOpen()) {
System.out.println("cannot receive, nbc is closed.");
}
if (nbc.isReceivingSuspended()) {
System.out.println("cannot receive, receiving is suspended!");
}
if (nbc.available() <= 0) {
System.out.println("cannot receive, nothing available to read");
}
byte[] bytes = null;
DataPacket packet = null;
do {
try {
bytes = nbc.readBytesByDelimiter(DELIMITER);
ByteArrayInputStream bin = new ByteArrayInputStream(bytes);
ObjectInputStream in = new ObjectInputStream(bin);
packet = (DataPacket) in.readObject();
in.close();
bin.close();
} catch (BufferUnderflowException bue) {
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
} while (bytes == null);
return packet;
}
[/code]
ich schicke z.Z. enums, die werden dann mit integer werten ersetzt um daten zu sparen, jetzt will ich erstmal dass es übersichtlich ist und alles funktioniert 