マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

IPヘッダの解析にByteBufferを使ってみた

前回はbyte[]でやってたけど、ByteBufferを使うようにしてみた。ByteBufferだとgetShortがあるのでちょっと楽できた

public void set(ByteBuffer packet){
    int first = packet.get();
    version = (first >> 4) & 0x0F;
    headerLength = first & 0x0F;
    serviceType = packet.get() & 0xFF;
    packetLength = packet.getShort() & 0xFFFF;
    id = packet.getShort() & 0xFFFF;
    	
    int flagPosition = packet.getShort();
    flag = (flagPosition >> 13) & 0x0F;
    offset = flagPosition & 0x1FFF;
    ttl = packet.get() & 0xFF;
    protocol = packet.get() & 0xFF;
    checksum = packet.getShort() & 0xFFFF;

    srcAddress = ip2Str(packet);
    dstAddress = ip2Str(packet);
}