Auf Thema antworten

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 :)



Oben