31 Ekim 2019 Perşembe

JavaSound LineListener Arayüzü

Giriş
Şu satırı dahil ederiz
import javax.sound.sampled.LineListener;
Clip nesnesini dinler.

update metodu
Örnek
Şöyle yaparız.
// 5) our line listener checks when audio is ended and stops the line
//this is full example, but you manipulated your way
clip.addLineListener(new LineListener() {
  @Override
  public void update(LineEvent event) {
    LineEvent.Type type = event.getType();
    if (type == LineEvent.Type.OPEN) {
    } else if (type == LineEvent.Type.CLOSE) {
      System.exit(0);
    } else if (type == LineEvent.Type.START) {
    } else if (type == LineEvent.Type.STOP) {
      clip.close();
    }
  }
});
Örnek
Şöyle yaparız.
clip.addLineListener(new LineListener() {
  @Override
  public void update(LineEvent event) {
    if (event.getType() == LineEvent.Type.STOP)
      clip.close();
  }
});

30 Ekim 2019 Çarşamba

jNetPcap

Giriş
Java ile Pcap için kullanılabilecek iki proje var.
1. jNetPcap
2. Pcap4J
İkisi arasındaki farkın açıklaması şöyle.
One difference that is obvious between the two projects is that jNetPcap uses JNI for access to native code. PCap4j uses JNA for access to native code and a "com.sun" JNA compatibility library.
FormatUtils Sınıfı
ip metodu
byte[] dizisini String'e çevirir. Örnek ver

Ip4 Sınıfı
destination metodu
byte[] döner. Örnek ver

source metodu
Örnek ver

Tcp Sınıfı
destination metodu
İsmi destination olmasına reğmen port numarasını döner.
Örnek ver

getPayload metodu
Örnek ver

getPayloadLength metodu
Örnek ver

seq metodu
Örnek ver

source metodu
İsmi source olmasına reğmen port numarasını döner.
Örnek ver

Pcap Sınıfı
findAllDevices metodu
Örnek ver


loop metodu
Şöyle yaparız.
StringBuilder errbuf = new StringBuilder();
Pcap pcap = Pcap.openOffline(this.pcapFilename, errbuf);

if (pcap == null) {
  throw new IOException(errbuf.toString());
}

JPacketHandler<StringBuilder> packetHandler = new JPacketHandler<StringBuilder>() {
  @Override
  public void nextPacket(JPacket packet, StringBuilder user) {
    System.out.println("Next Packet");    
  }
};
pcap.loop(-1, packetHandler, errbuf);
pcap.close();
openLive metodu
Örnek ver

openOffline metodu
Şöyle yaparız.
StringBuilder errbuf = new StringBuilder();
Pcap pcap = Pcap.openOffline(this.pcapFilename, errbuf);
PcapPacket Sınıfı
hasHeader metodu
Şöyle yaparız.
PcapPacket packet = ...;
if (packet.hasHeader(udp)) {
  ...
}
PcapPacketHander Arayüzü
nextPacket metodu
İmzası şöyle.
@Override
public void nextPacket(PcapPacket packet, Object arg1);

24 Ekim 2019 Perşembe

@Inherited Anotasyonu

Giriş
Şu satırı dahil ederiz.
import java.lang.annotation.Inherited;
Ata sınıftaki anotasyonun alt sınıfa da geçmesini sağlar. Açıklaması şöyle.
By default, annotations are not inherited by subclasses. But if an annotation is marked as  @Inherited, that means when a class is annotated with that annotation, the annotation is also inherited by subclasses. This annotation is applicable only for class. Note that if an interface is annotated with that annotation, the annotation is not inherited by implementing classes.
Not : Anotasyonu tanımlarken @Retention ve @Target bilgileri de girilir.

Örnek
Elimizde şöyle bir kod olsun.
class Parent {
    @SomeAnnotation(someValue)
    public void someMethod(){...}
}

class Child extends Parent {
    @Override
    public void someMethod(){...}
}
Anotasyonumuzu tanımlamak için şöyle yaparız.
@Inherited
public @interface SomeAnnotation {}