문제

이 두 방법의 차이점은 무엇입니까?

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 이전에 일치하는 유형의 패킷 데이터를 필터링하기 위해 사용됩니다. PacketFilter를 만족시키는 패킷 만 PacketListener 처리를 입력 할 수 있습니다.

PacketFilter는 메소드를 선언하는 인터페이스입니다.

PacketListener는 지정된 필터를 전달하는 패킷을 듣는 메커니즘을 제공합니다. 이를 통해 이벤트 스타일 프로그래밍이 가능합니다. 새 패킷을 찾을 때마다 프로세스 패킷 (패킷) 메소드가 호출됩니다. 이것은 PacketCollector가 제공 한 기능에 대한 반대의 접근법으로, 결과를 기다리는 동안 차단할 수 있습니다.

PacketFilter는 특정 속성에 대한 패킷을 필터링하는 방법을 정의합니다. 패킷 필터는 패킷 리스너 또는 수집기를 구성 할 때 사용됩니다. 필터는 추가 패킷 처리를 위해 수집기 또는 리스너의 기준과 일치하는 패킷을 정의합니다.

여러 사전 정의 필터가 정의됩니다. 이 필터는 및 필터 및 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