분명해 보입니다. 그만큼 PacketFilter
처리를위한 패킷을 필터링합니다 PacketListener.
PacketFilter와 Accept의 차이점은 무엇입니까?
문제
이 두 방법의 차이점은 무엇입니까?
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는 지정된 필터를 전달하는 패킷을 듣는 메커니즘을 제공합니다. 이를 통해 이벤트 스타일 프로그래밍이 가능합니다. 새 패킷을 찾을 때마다 프로세스 패킷 (패킷) 메소드가 호출됩니다. 이것은 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의 것입니다.