Frage

Was ist der Unterschied zwischen diesen beiden Methoden:

processpacket:

PacketListener pListener = new PacketListener() {
        @Override
        public void processPacket(Packet packet) {
            if(packet instanceof Presence) {
               //..
            }
        }
    };

und annehmen :

PacketFilter pFilter = new PacketFilter() {
        @Override
        public boolean accept(Packet packet) {
            return true;
        }
    };

Sind sie nicht in der Lage, dasselbe zu tun?

Hinweis :

con.addPacketListener(pListener, pFilter);
War es hilfreich?

Lösung

Es scheint klar. Das PacketFilter Filterpakete zur Verarbeitung durch die PacketListener.

Andere Tipps

Wie Sie verstehen, wird PaketFilter vor PaketListener verwendet, um die Paketdaten der Übereinstimmungen zu filtern. Nur Paket, das PacketFilter erfüllt, kann die Verarbeitung von PaketListener eingeben.

Und Paketfilter ist eine Schnittstelle, die nur eine Methode deklariert: Akzeptieren.

PaketListener bietet einen Mechanismus zum Hören für Pakete, die einen bestimmten Filter übergeben. Dies ermöglicht die Programmierung im Ereignisstil-Jedes Mal, wenn ein neues Paket gefunden wird, wird die ProcessPacket (Paket) -Methode aufgerufen. Dies ist der entgegengesetzte Ansatz für die Funktionalität, die ein Paketcollector bereitstellt, mit dem Sie während des Wartens auf die Ergebnisse blockieren können.

PacketFilter definiert eine Möglichkeit, Pakete für bestimmte Attribute zu filtern. Paketfilter werden beim Bau von Pakethörern oder -Kollektoren verwendet - der Filter definiert, welche Pakete den Kriterien des Sammlers oder Hörers für die weitere Paketverarbeitung übereinstimmen.

Mehrere vordefinierte Filter sind definiert. Diese Filter können logisch für eine komplexere Paketfilterung mithilfe der Filter und Filterfilter kombiniert werden. Es ist auch möglich, Ihre eigenen Filter zu definieren, indem Sie diese Schnittstelle implementieren. Das folgende Codebeispiel erstellt einen trivialen Filter für Pakete mit einer bestimmten ID.

// Use an anonymous inner class to define a packet filter that returns
// all packets that have a packet ID of "RS145".
PacketFilter myFilter = new PacketFilter() {
    public boolean accept(Packet packet) {
        return "RS145".equals(packet.getPacketID());
    }
 };
// Create a new packet collector using the filter we created.
PacketCollector myCollector = packetReader.createPacketCollector(myFilter);

Die oben genannten Aussagen stammen von Java Doc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top