这两种方法有什么区别:

ProcessPacket:

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

接受 :

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

他们不是有能力做同样的事情吗?

笔记 :

con.addPacketListener(pListener, pFilter);
有帮助吗?

解决方案

似乎很清楚。这 PacketFilter 用于处理的过滤数据包 PacketListener.

其他提示

如您所知,PacketFilter在PacketListener之前用于过滤匹配类型的数据包数据。只有满足分支机箱的数据包才能输入PacketListener处理。

PacketFilter是一个仅声明方法的接口:接受。

PacketListener提供了一种机制,可以收听传递指定过滤器的数据包。这允许事件式编程 - 每次找到新数据包时,都会调用ProcessPacket(数据包)方法。这是针对PacketCollector提供的功能的相反方法,该功能使您可以在等待结果时阻止。

PAKETFILTER定义了一种用于特定属性的过滤数据包的方法。构造数据包侦听器或收集器时使用数据包过滤器 - 该过滤器定义了哪些数据包匹配收集器或侦听器的标准以进行进一步的数据包处理。

定义了几个预定义的过滤器。这些过滤器可以在逻辑上合并,以通过使用和滤光器和Orfilter过滤器进行更复杂的数据包过滤。也可以通过实现此接口来定义自己的过滤器。下面的代码示例为具有特定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);

上面的陈述来自Java Doc。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top