亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transactionid.java

?? stun的java實現
?? JAVA
字號:
/*
 * Stun4j, the OpenSource Java Solution for NAT and Firewall Traversal.
 *
 * Distributable under LGPL license.
 * See terms of license at gnu.org.
 */
package net.java.stun4j.stack;

import java.util.Random;
import java.util.Arrays;

/**
 * This class encapsulates a STUN transaction ID. It is useful for storing
 * transaction ids in collection objects as it implements the equals method.
 * It also provies a utility for creating unique transaction ids.
 *
 * <p>Organisation: <p> Louis Pasteur University, Strasbourg, France</p>
 * <p>Network Research Team (http://www-r2.u-strasbg.fr)</p></p>
 * @author Emil Ivov
 * @version 0.1
 */

class TransactionID
{
    /**
     * The id itself
     */
    private byte transactionID[] = new byte[16];

    /**
     * The object to use to generate the rightmost 8 bytes of the id.
     */
    private static Random random = new Random(System.currentTimeMillis());

    /**
     * A hashcode for hashtable storage.
     */
    private int hashCode = 0;

    private TransactionID()
    {
    }

    /**
     * Creates a transaction id object.The transaction id itself is genereated
     * using the folloing algorithm:
     *
     * The first 8 bytes of the id are given the value of System.currentTimeMillis()
     * Putting the right most bits first so that we get a more optimized equals()
     * method.
     *
     * @return A TransactionID object with a unique transaction id.
     */
    static TransactionID createTransactionID()
    {
        TransactionID tid = new TransactionID();

        long left  = System.currentTimeMillis();//the first 8 bytes of the id
        long right = random.nextLong();//the last 8 bytes of the id

        for(int i = 0; i < 8; i++)
        {
            tid.transactionID[i]   = (byte)((left  >> (i*8))& 0xFFl);
            tid.transactionID[i+8] = (byte)((right >> (i*8))& 0xFFl);
        }

        //calculate hashcode for Hashtable storage.
        tid.hashCode =   (tid.transactionID[3] << 24 & 0xFF000000)
                       | (tid.transactionID[2] << 16 & 0x00FF0000)
                       | (tid.transactionID[1] << 8  & 0x0000FF00)
                       | (tid.transactionID[0]       & 0x000000FF);

        return tid;
    }

    /**
     * Creates a transaction identifier object with the specified id.
     * @param transactionID the id to give to the new TransactionID
     * @return a new TransactionID object with the specified id value;
     */
    static TransactionID createTransactionID(byte[] transactionID)
    {
        TransactionID tid = new TransactionID();

        System.arraycopy(transactionID, 0, tid.transactionID, 0, 16);

        //calculate hashcode for Hashtable storage.
        tid.hashCode =   (tid.transactionID[3] << 24 & 0xFF000000)
                       | (tid.transactionID[2] << 16 & 0x00FF0000)
                       | (tid.transactionID[1] << 8  & 0x0000FF00)
                       | (tid.transactionID[0]       & 0x000000FF);


        return tid;
    }


    /**
     * Returns the transaction id byte array (length 16).
     * @return the transaction ID byte array.
     */
    public byte[] getTransactionID()
    {
        return transactionID;
    }

    /**
     * Compares two TransactionID objects.
     * @param obj the object to compare with.
     * @return true if the objects are equal and false otherwise.
     */
    public boolean equals(Object obj)
    {

        if(   obj == null
           || !(obj instanceof TransactionID))
            return false;

        if(this == obj)
            return true;

        byte targetBytes[] = ((TransactionID)obj).transactionID;

        return Arrays.equals(transactionID, targetBytes);
    }

    /**
     * Compares the specified byte array with this transaction id.
     * @param targetID the id to compare with ours.
     * @return true if targetID matches this transaction id.
     */
    public boolean equals(byte[] targetID)
    {
        return Arrays.equals(transactionID, targetID);
    }

    /**
     * Returns the first four bytes of the transactionID to ensure proper
     * retrieval from hashtables;
     * @return the hashcode of this object - as advised by the Java Platform
     * Specification
     */
    public int hashCode()
    {
        return hashCode;
    }

    /**
     * Returns a string representation of the ID
     * @return a hex string representing the id
     */
    public String toString()
    {
        StringBuffer idStr = new StringBuffer();

        for(int i = 0; i < transactionID.length; i++)
        {
            idStr.append("0x");
            if((transactionID[i]&0xFF) <= 15)
            {
                idStr.append("0");
            }

            idStr.append(Integer.toHexString(transactionID[i]&0xff).toUpperCase());

            if(i < transactionID.length)
                idStr.append(" ");
        }

        return idStr.toString();
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久蜜臀中文字幕| 国产乱国产乱300精品| 在线看日本不卡| 一二三四区精品视频| 在线观看日产精品| 日韩精品电影在线观看| 精品国产91洋老外米糕| 国产精品中文欧美| 中文字幕一区二区三区不卡在线| 99国产精品久久| 午夜成人在线视频| 精品福利一区二区三区| 成人精品国产免费网站| 樱花草国产18久久久久| 欧美一级黄色大片| 国内精品久久久久影院一蜜桃| 日本一区二区三区免费乱视频| 97超碰欧美中文字幕| 亚洲成a人片综合在线| 2020国产精品自拍| 日本久久精品电影| 美女高潮久久久| 国产精品美日韩| 欧美美女bb生活片| 国产精品一区二区三区四区| 亚洲免费观看高清在线观看| 欧美一区二区三区在线视频| 成人性生交大片免费看中文网站| 亚洲女同女同女同女同女同69| 在线综合亚洲欧美在线视频| 国产99久久久国产精品 | 久久精品人人做人人综合| 成人不卡免费av| 日韩电影在线一区二区| 国产精品看片你懂得| 777奇米四色成人影色区| 国产成人在线观看| 亚洲1区2区3区视频| 中文文精品字幕一区二区| 欧美特级限制片免费在线观看| 国产老肥熟一区二区三区| 亚洲国产一区二区三区| 欧美激情在线观看视频免费| 在线播放视频一区| 91丨九色丨国产丨porny| 国产一区 二区| 午夜精品一区二区三区电影天堂| 国产精品久线观看视频| 精品卡一卡二卡三卡四在线| 欧美日韩中字一区| 91老师片黄在线观看| 国产在线精品免费av| 天天色天天操综合| 亚洲综合图片区| 国产精品成人免费| 久久蜜桃一区二区| 91精品国产综合久久精品app| 91免费精品国自产拍在线不卡| 国产在线精品一区二区| 人妖欧美一区二区| 亚洲成人免费在线观看| 亚洲制服丝袜一区| 一区二区三区在线观看动漫| 中文字幕一区二区三区视频| 国产精品色在线观看| 久久久五月婷婷| 久久久久久久网| 亚洲精品一区二区三区在线观看| 欧美日韩电影在线| 欧美日韩欧美一区二区| 欧美在线观看视频一区二区三区| 91免费看`日韩一区二区| 99久久99久久精品免费看蜜桃| 国产99久久久国产精品| 床上的激情91.| 国产.欧美.日韩| 粉嫩av亚洲一区二区图片| 国产精品一区二区男女羞羞无遮挡| 久久成人久久鬼色| 韩日欧美一区二区三区| 国产一区在线精品| 国产黄人亚洲片| 成人一二三区视频| 99这里只有久久精品视频| 91在线视频免费观看| 91小宝寻花一区二区三区| 91蜜桃传媒精品久久久一区二区| 成人精品gif动图一区| 成人黄色小视频在线观看| 丁香一区二区三区| 91蝌蚪porny| 欧美性色黄大片| 欧美一区二区三区系列电影| 欧美成人三级电影在线| 国产欧美视频一区二区三区| 国产精品丝袜久久久久久app| 国产精品丝袜黑色高跟| 亚洲欧美国产77777| 日韩国产欧美在线观看| 国产在线视频一区二区| 不卡一区在线观看| 欧美日韩中文另类| 欧美xxxxx牲另类人与| 国产人妖乱国产精品人妖| 中文字幕一区二区三区精华液| 亚洲男人电影天堂| 日本成人在线看| 国产精品99久久不卡二区| 91蝌蚪porny| 日韩午夜在线播放| 国产精品久久精品日日| 亚洲午夜精品17c| 国产一区二三区好的| 色丁香久综合在线久综合在线观看| 在线不卡的av| 国产精品久久久久影院亚瑟| 视频一区国产视频| 成人美女视频在线观看| 欧美日韩视频专区在线播放| 国产女人aaa级久久久级| 亚洲国产精品久久不卡毛片| 国产成人精品一区二区三区四区 | 日韩精品一区二区在线| 国产精品乱人伦一区二区| 亚洲一区二区三区自拍| 国产乱子轮精品视频| 欧美在线播放高清精品| 国产视频一区在线播放| 午夜在线成人av| 成人深夜在线观看| 日韩欧美国产电影| 亚洲国产成人porn| 成人app下载| 日韩精品一区二区三区视频播放| 亚洲日本中文字幕区| 国内成人免费视频| 欧美日韩国产中文| 亚洲私人影院在线观看| 国产呦萝稀缺另类资源| 337p亚洲精品色噜噜| 亚洲精品欧美专区| 成人在线一区二区三区| 欧美一级高清大全免费观看| 亚洲一区二区三区四区不卡| 成人福利在线看| 精品国产欧美一区二区| 日本中文字幕一区二区视频 | 韩国午夜理伦三级不卡影院| 欧洲视频一区二区| 中文字幕一区二区三区乱码在线| 国模娜娜一区二区三区| 欧美成人福利视频| 日韩国产一二三区| 欧美高清精品3d| 亚洲bt欧美bt精品777| 91丨九色丨尤物| 亚洲日本在线看| 97精品超碰一区二区三区| 国产精品的网站| 成人动漫视频在线| 国产精品麻豆视频| a4yy欧美一区二区三区| 国产精品免费视频一区| www.在线欧美| 亚洲欧美日韩中文字幕一区二区三区| 国模娜娜一区二区三区| 亚洲欧美日韩一区| 成人一区二区三区视频| 久久亚区不卡日本| 国产成人午夜视频| 日本一区免费视频| gogogo免费视频观看亚洲一| 国产精品久久久久久久久动漫 | 亚洲男人天堂一区| 日本精品视频一区二区| 亚洲图片欧美综合| 欧美色精品在线视频| 日韩av午夜在线观看| 日韩欧美一级二级三级| 国产一区二区三区日韩 | 91福利在线导航| 性欧美疯狂xxxxbbbb| 日韩一区二区免费在线电影| 激情小说欧美图片| 国产人成一区二区三区影院| 国产91色综合久久免费分享| 国产精品久久久久久久久免费桃花 | 一区二区三区国产| 欧美日韩精品欧美日韩精品| 麻豆国产精品官网| 国产日韩欧美不卡| 色哟哟一区二区在线观看| 亚洲第一精品在线| 日韩欧美在线网站| 丁香激情综合国产| 亚洲国产欧美另类丝袜| 日韩视频国产视频| 成人美女视频在线观看18| 一级日本不卡的影视| 欧美mv日韩mv国产网站app|