Wolfgang: BufferedReader in Vector

Moin,

Jo, ich hab eine Klasse, die von Thread abgeleitet ist.
In der run() Methode liest sie von einem BufferedReader, der im Constructor übergeben wird. In dieser Klasse ist auch eine stopread()
Methode.
Ich mache also in einer anderen Klasse:
BufferedReader in = Socket.accept().getInputStream()

Vector.add(new myReader(in));

Wenn ich den myReader nimmer brauch, caste ich ihn wieder, und rufe die stopread() Methode auf, welche den myReader dazu veranlasst, nich mehr zu lesen. Dann weis ich dem myReader null zu, und entferne ihn aus dem Vector.
jo, und jezt müsste ja die Verbindung zum Client unterbrochen sein. Aber beim Client giebt es keine Exception, wenn er schreiben will.
Das heißt doch, das der BufferedReader, und das Socket immer noch im Speicher liegt, oder?

  1. Hi!

    Wenn ich den myReader nimmer brauch, caste ich ihn wieder, und rufe die stopread() Methode auf, welche den myReader dazu veranlasst, nich mehr zu lesen. Dann weis ich dem myReader null zu, und entferne ihn aus dem Vector.
    jo, und jezt müsste ja die Verbindung zum Client unterbrochen sein. Aber beim Client giebt es keine Exception, wenn er schreiben will.
    Das heißt doch, das der BufferedReader, und das Socket immer noch im Speicher liegt, oder?

    Der myReader ließt vielleicht nicht mehr, aber die Verbindung steht immer noch. Wenn Du das Objekt löschst, wird die Verbindung nicht automatisch getrennt. Du musst also die close()-Methode des Socket-Objekts aufrufen, um die Verbindung wirklich sauber zu trennen.

    VG Simon

    1. Thx,

      jo, dann test ich das mal.

      Cu