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

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

?? udppushsourcestream.java

?? 是一個用java實現的
?? JAVA
字號:
/*
 * UDPPushSourceStream.java
 *
 * Created on November 18, 2003, 11:36 PM
 */

package gov.nist.applet.phone.media.protocol.transport;

import java.io.IOException;
import java.net.InetAddress;
import java.net.DatagramSocket;
import java.net.DatagramPacket;
import javax.media.protocol.SourceTransferHandler;
import javax.media.protocol.PushSourceStream;
import javax.media.protocol.ContentDescriptor;
/**
 * This class is an implementation of the PushSourceStream for
 * The UDP transport protocol underlying to RTP. 
 * @author  DERUELLE Jean
 */
public class UDPPushSourceStream extends Thread implements PushSourceStream {
    
    private DatagramSocket sock;
    private InetAddress addr;
    private int port;
    private boolean done = false;
    private boolean dataRead = false;

    private SourceTransferHandler sth = null;

    /** 
     * Creates a new instance of UDPPushSourceStream.
     * @param sock - the UDP socket from which we will get the input stream.     
     * @param addr - the address of the remote host
     * @param port - the port of the remote host
     */
    public UDPPushSourceStream(DatagramSocket sock, InetAddress addr, int port) {
        this.sock = sock;
        this.addr = addr;
        this.port = port;
    }

    /**
     * Read some data from the input stream.
     * @param buffer - the buffer into which the data is read.
     * @param offset - the start offset in array buffer at which the data is written.
     * @param len - the maximum number of bytes to read.
     * @return the total number of bytes read into the buffer,
     * or -1 if there is no more data because the end of the stream has been reached.
     */
    public int read(byte buffer[], int offset, int length) {
        DatagramPacket p = new DatagramPacket(buffer, offset, length, addr, port);
        try {
            sock.receive(p);            
        } catch (IOException e){               
            return -1;
        }
        synchronized (this) {
            dataRead = true;
            notify();
        }
        return p.getLength();
    }
    /**
     * Start this thread
     */
    public synchronized void start() {
        super.start();
        if (sth != null) {
            dataRead = true;
            notify();
        }
    }
    /**
     * Kill this thread
     */
    public synchronized void kill() {
        done = true;
        notify();
    }
    /**
     * Determine the size of the buffer needed for the data transfer. 
     * This method is provided so that a transfer handler can determine how much data, 
     * at a minimum, will be available to transfer from the source. 
     * Overflow and data loss is likely to occur if this much data isn't read at transfer time.
     * @return The size of the data transfer.
     */
    public int getMinimumTransferSize() {
        return 2 * 1024;	// twice the MTU size, just to be safe.
    }
    /**
     * Register an object to service data transfers to this stream.
     *
     * If a handler is already registered when setTransferHandler is called, 
     * the handler is replaced; there can only be one handler at a time.
     * @param sth - The handler to transfer data to.
     */
    public synchronized void setTransferHandler(SourceTransferHandler sth) {
        this.sth = sth;
        dataRead = true;
        notify();
    }
    /**
     * Get the current content type for this stream.
     * @return The current ContentDescriptor for this stream.
     */
    // Not applicable.
    public ContentDescriptor getContentDescriptor() {
        return null;
    }
    /**
     * Get the size, in bytes, of the content on this stream. 
     * LENGTH_UNKNOWN is returned if the length is not known.
     * @return The content length in bytes.
     */
    // Not applicable.
    public long getContentLength() {
        return LENGTH_UNKNOWN;
    }
    /**
     * Find out if the end of the stream has been reached.
     * @return Returns true if there is no more data.
     */
    // Not applicable.
    public boolean endOfStream() {
        return false;
    }
    /**
     * Obtain the collection of objects that control the object that implements this interface.
     * If no controls are supported, a zero length array is returned.
     * @return the collection of object controls
     */
    // Not applicable.
    public Object[] getControls() {
        return new Object[0];
    }
    /**
     * Obtain the object that implements the specified Class or Interface  The full class or interface name must be used.
     * If the control is not supported then null is returned.
     * @return the object that implements the control, or null.
     */
    // Not applicable.
    public Object getControl(String type) {
        return null;
    }

    /**
     * Loop and notify the transfer handler of new data.
     */
    public void run() {
        while (!done) {

            synchronized (this) {
                while (!dataRead && !done) {
                    try {
                        wait();
                    } catch (InterruptedException e) { }
                }
                dataRead = false;
            }

            if (sth != null && !done) {
                sth.transferData(this);
            }
        }
    }
    
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本青草视频在线怡红院| 中文字幕国产一区| 中文字幕亚洲一区二区va在线| 久久成人18免费观看| 在线观看日韩国产| 国产精品三级电影| 91丝袜呻吟高潮美腿白嫩在线观看| 久久先锋资源网| 久久99国产精品久久99| 日韩午夜精品视频| 久久99精品久久久| 亚洲第一久久影院| 欧美三级在线看| 热久久一区二区| 精品国产一区二区三区忘忧草| 极品尤物av久久免费看| 亚洲一区二区三区不卡国产欧美| 欧美日韩国产经典色站一区二区三区| 五月天精品一区二区三区| 欧美电影免费观看高清完整版在| 国产乱码精品一品二品| 欧美国产日本视频| 精品理论电影在线观看| www.日韩大片| 亚洲美女一区二区三区| 777久久久精品| 国产一区二区三区四区五区美女| 亚洲国产精品精华液ab| 精品国产99国产精品| 在线播放日韩导航| 国产福利一区在线观看| 亚洲欧洲一区二区三区| 久久精品欧美一区二区三区不卡 | 国产午夜亚洲精品羞羞网站| 911精品产国品一二三产区| 欧美日韩免费高清一区色橹橹| 色婷婷国产精品久久包臀| 石原莉奈在线亚洲三区| 国产三级精品视频| 欧美色国产精品| 欧美日韩国产美| 欧美高清激情brazzers| 欧美一区二区三级| 99综合电影在线视频| 97久久精品人人澡人人爽| 日韩av电影一区| 亚洲日本在线看| 一区二区三区四区在线| 国产亚洲一区字幕| 亚洲国产高清不卡| 国产精品福利一区二区| 91精品午夜视频| 久久先锋影音av鲁色资源网| 久久久久久久久久久久电影| 欧美色综合久久| 99久久精品免费看国产| 在线视频欧美精品| 6080亚洲精品一区二区| 精品国产制服丝袜高跟| 国产免费久久精品| 亚洲色图另类专区| 午夜精品久久久久久久蜜桃app| 舔着乳尖日韩一区| 久久av老司机精品网站导航| 国产精品一区二区久久精品爱涩| 高清成人免费视频| 久久精品噜噜噜成人88aⅴ| 国产一区二区看久久| 成人午夜在线播放| 国产精品亚洲人在线观看| av激情综合网| 欧美美女激情18p| 久久在线观看免费| 亚洲伦在线观看| 久久精品一区二区| 亚洲激情综合网| 青青草成人在线观看| 国产精品亚洲第一| 欧洲视频一区二区| 精品国产伦一区二区三区观看体验| 国产精品久久久久久妇女6080| 亚洲图片欧美综合| 视频一区在线播放| 国产高清精品久久久久| 精品视频一区三区九区| 久久久久久久久久久久电影| 一区二区三区国产豹纹内裤在线| 久久精品国产第一区二区三区| 成人午夜av电影| 欧美一区二区精品在线| 中文字幕不卡在线| 日韩av不卡一区二区| 成人免费va视频| 欧美成人艳星乳罩| 亚洲国产中文字幕| 成人午夜在线播放| 日韩欧美国产午夜精品| 亚洲乱码国产乱码精品精98午夜| 久久精品噜噜噜成人av农村| 色婷婷精品大视频在线蜜桃视频| 精品国产免费一区二区三区香蕉| 亚洲猫色日本管| 国产成人av在线影院| 欧美一区二区在线视频| 国产精品毛片高清在线完整版| 午夜不卡av在线| 91在线免费播放| 日本一区二区三区免费乱视频 | 国产在线精品免费av| 在线观看国产精品网站| 国产精品久久久久久久第一福利| 久久国产精品99精品国产| 欧美三日本三级三级在线播放| 国产日韩精品一区二区浪潮av| 日本在线不卡一区| 欧美色图在线观看| 亚洲免费在线观看| 9i在线看片成人免费| 国产欧美精品一区| 国产一区二区精品久久99| 欧美一区二区三区视频| 一级精品视频在线观看宜春院 | 综合久久综合久久| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 国产精品美女久久久久高潮| 国内精品伊人久久久久影院对白| 久草这里只有精品视频| 这里只有精品免费| 日韩高清不卡一区二区三区| 欧美日韩中文另类| 亚洲国产乱码最新视频 | 亚洲美女电影在线| 91丨porny丨在线| 亚洲视频1区2区| 99精品欧美一区二区三区小说| 中文字幕亚洲电影| 91浏览器打开| 一区二区三区日韩精品视频| 一本色道久久综合亚洲91| 最新热久久免费视频| 99久久综合色| 亚洲美女精品一区| 欧美群妇大交群的观看方式| 五月激情六月综合| 日韩午夜在线影院| 国产精品亚洲综合一区在线观看| 久久久精品中文字幕麻豆发布| 国产在线播放一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 蓝色福利精品导航| 国产欧美一区二区精品性色超碰| 国产suv精品一区二区三区| 欧美国产国产综合| 91啪亚洲精品| 亚洲成人综合网站| 亚洲欧洲精品一区二区精品久久久| 成人免费视频caoporn| 亚洲色图20p| 91精品欧美福利在线观看| 捆绑变态av一区二区三区| 国产色产综合产在线视频| 91麻豆国产福利精品| 视频一区视频二区在线观看| 精品理论电影在线| 92国产精品观看| 日本成人在线不卡视频| 久久精品视频一区| 欧洲一区在线观看| 国内精品久久久久影院薰衣草 | 久久久久久久久久美女| 91同城在线观看| 毛片av中文字幕一区二区| 欧美日韩国产另类一区| 黄色精品一二区| 亚洲另类在线视频| 欧美xxxx在线观看| 一本大道av伊人久久综合| 日产精品久久久久久久性色| 国产免费久久精品| 欧美军同video69gay| 国产成人自拍网| 亚洲成av人片在线观看无码| 精品成人私密视频| 欧美日韩精品系列| 成人av免费在线播放| 国产精品剧情在线亚洲| 欧美男男青年gay1069videost| 国产一二精品视频| 性做久久久久久久免费看| 中文字幕av一区二区三区高| 欧美三级电影精品| 成人黄色片在线观看| 麻豆一区二区三| 一区二区三区美女视频| 26uuu精品一区二区在线观看| 欧美私人免费视频| 成人午夜在线播放| 极品少妇一区二区| 日韩精品亚洲专区| 亚洲激情校园春色|