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

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

?? tcphandler.java

?? J2ME MIDP_Example_Applications
?? JAVA
字號:
// Copyright 2003 Nokia Corporation.
//
// THIS SOURCE CODE IS PROVIDED 'AS IS', WITH NO WARRANTIES WHATSOEVER,
// EXPRESS OR IMPLIED, INCLUDING ANY WARRANTY OF MERCHANTABILITY, FITNESS
// FOR ANY PARTICULAR PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE
// OR TRADE PRACTICE, RELATING TO THE SOURCE CODE OR ANY WARRANTY OTHERWISE
// ARISING OUT OF ANY PROPOSAL, SPECIFICATION, OR SAMPLE AND WITH NO
// OBLIGATION OF NOKIA TO PROVIDE THE LICENSEE WITH ANY MAINTENANCE OR
// SUPPORT. FURTHERMORE, NOKIA MAKES NO WARRANTY THAT EXERCISE OF THE
// RIGHTS GRANTED HEREUNDER DOES NOT INFRINGE OR MAY NOT CAUSE INFRINGEMENT
// OF ANY PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OWNED OR CONTROLLED
// BY THIRD PARTIES
//
// Furthermore, information provided in this source code is preliminary,
// and may be changed substantially prior to final release. Nokia Corporation
// retains the right to make changes to this source code at
// any time, without notice. This source code is provided for informational
// purposes only.
//
// Nokia and Nokia Connecting People are registered trademarks of Nokia
// Corporation.
// Java and all Java-based marks are trademarks or registered trademarks of
// Sun Microsystems, Inc.
// Other product and company names mentioned herein may be trademarks or
// trade names of their respective owners.
//
// A non-exclusive, non-transferable, worldwide, limited license is hereby
// granted to the Licensee to download, print, reproduce and modify the
// source code. The licensee has the right to market, sell, distribute and
// make available the source code in original or modified form only when
// incorporated into the programs developed by the Licensee. No other
// license, express or implied, by estoppel or otherwise, to any other
// intellectual property rights is granted herein.


// unnamed package

import java.io.InputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Vector;
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;


class TCPHandler
    implements Runnable
{
    private static final byte ZERO = (byte)'0';
    private static final int LENGTH_MAX_DIGITS = 5;
    private static final int MAX_MESSAGE_LENGTH = 65536 - LENGTH_MAX_DIGITS;

    private final Vector writeQueue = new Vector();
    private final String url;

    private SocketConnection conn = null;
    private OutputStream out = null;
    private InputStream in = null;
    private TCPHandlerListener listener = null;
    private boolean aborting = false;


    TCPHandler(String url)
    {
        if ((url == null) || !url.startsWith("socket://"))
        {
            throw new IllegalArgumentException("Bad address");
        }
        else
        {
            this.url = url;
            new Thread(this).start();
        }
    }


    void setTCPHandlerListener(TCPHandlerListener listener)
    {
        this.listener = listener;
    }


    void close()
    {
        if (!aborting)
        {
            synchronized(this)
            {
                aborting = true;
            }

            synchronized(writeQueue)
            {
                writeQueue.notify();
            }

            if (out != null)
            {
                try
                {
                    out.close();
                    synchronized(this)
                    {
                        out = null;
                    }
                }
                catch (Exception e)
                {
                    // there is nothing we can do: ignore
                }
            }

            if (in != null)
            {
                try
                {
                    in.close();
                    synchronized(this)
                    {
                        in = null;
                    }
                }
                catch (Exception e)
                {
                    // there is nothing we can do: ignore
                }
            }

            if (conn != null)
            {
                try
                {
                    conn.close();
                }
                catch (Exception e)
                {
                    // there is nothing we can do: ignore
                }
            }
        }
    }


    public void run()
    {
        try
        {
            conn = (SocketConnection) (Connector.open(url));
            // Disable Nagle algorithm:
            conn.setSocketOption(SocketConnection.DELAY, 0);
            out = conn.openOutputStream();
            in = conn.openInputStream();

            startWriteQueue();
        }
        catch (IOException e)
        {
            listener.handleError("Error opening socket connection to: '" +
                                 url + "'");
            return;
        }

        while (!aborting)
        {
            try
            {
                byte[] lengthBuf = new byte[LENGTH_MAX_DIGITS];
                readFully(in, lengthBuf);
                int length = readLength(lengthBuf);
                byte[] temp = new byte[length];
                readFully(in, temp);
                if (listener != null)
                {
                    listener.handleMessage(temp);
                }
            }
            catch (IOException ex)
            {
                close();

                if (listener != null)
                {
                    listener.handleError("I/O Exception: " + ex.getMessage());
                }
            }
        }
    }


    void queueMessageForSending(byte[] data)
    {
        if (data.length > MAX_MESSAGE_LENGTH)
        {
            throw new IllegalArgumentException(
                           "Message too long: limit is " +
                           MAX_MESSAGE_LENGTH + " bytes");
        }

        synchronized(writeQueue)
        {
            writeQueue.addElement(data);
            writeQueue.notify();
        }
    }


    private void sendMessage(byte[] data)
        throws IOException
    {
        byte[] buf = new byte[LENGTH_MAX_DIGITS + data.length];
        writeLength(data.length, buf);
        System.arraycopy(data, 0, buf, LENGTH_MAX_DIGITS, data.length);
        out.write(buf);
        out.flush();
    }


    private void startWriteQueue()
    {
        Runnable writer = new Runnable()
        {
            public void run()
            {
                while (!aborting)
                {
                    if (!writeQueue.isEmpty())
                    {
                        byte[] sendData = (byte[]) writeQueue.elementAt(0);
                        try
                        {
                            sendMessage(sendData);
                            writeQueue.removeElement(sendData);

                            // One might want to make a callback
                            // to the listener to inform it that
                            // the message has been actually sent.
                        }
                        catch (IOException e)
                        {
                            close();

                            // the reader calls parent.handleClose()
                        }
                    }

                    synchronized(writeQueue)
                    {
                        if (writeQueue.size() == 0)
                        {
                            try
                            {
                                writeQueue.wait();
                            }
                            catch (InterruptedException e)
                            {
                                // can't happen in MIDP
                            }
                        }
                    }
                }
            }
        };

        Thread writeThread = new Thread(writer);
        writeThread.start();
    }


    private static void readFully(InputStream in, byte[] buffer)
        throws IOException
    {
        int bytesRead = 0;
        while (bytesRead < buffer.length)
        {
            int count = in.read(buffer, bytesRead, buffer.length - bytesRead);
            if (count == -1)
            {
                throw new IOException("Input stream closed");
            }
            bytesRead += count;
        }
    }


    private static void writeLength(int value, byte[] buffer)
    {
        for (int i = LENGTH_MAX_DIGITS - 1; i >= 0; --i)
        {
            buffer[i] = (byte)(ZERO + value % 10);
            value = value / 10;
        }
    }


    private static int readLength(byte[] buffer)
    {
        int value = 0;
        for (int i = 0; i < LENGTH_MAX_DIGITS; ++i)
        {
            value *= 10;
            value += buffer[i] - ZERO;
        }
        return value;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一线二线三线视频| 欧美日韩一区二区三区免费看| 美女mm1313爽爽久久久蜜臀| 亚洲一级电影视频| 亚洲免费在线观看视频| 国产精品国产精品国产专区不片| 国产精品毛片高清在线完整版| 久久久精品2019中文字幕之3| 26uuu色噜噜精品一区| 亚洲午夜视频在线观看| 亚洲欧美色综合| 亚洲久本草在线中文字幕| 亚洲美女视频在线| 亚洲国产综合在线| 日韩二区在线观看| 美女被吸乳得到大胸91| 国产一区二区久久| 成人精品一区二区三区四区| 成人高清伦理免费影院在线观看| av色综合久久天堂av综合| 91老师片黄在线观看| 欧美午夜影院一区| 欧美一区二区三区电影| 精品国产乱码久久久久久闺蜜| 久久婷婷色综合| 亚洲欧美在线视频观看| 亚洲精品国产无套在线观| 婷婷成人激情在线网| 麻豆国产一区二区| 国产a精品视频| 91亚洲精华国产精华精华液| 欧美日韩一级二级| 欧美精品一区二区不卡| 国产精品国产自产拍在线| 亚洲国产日韩a在线播放性色| 日韩国产欧美在线播放| 国产精品小仙女| 色婷婷av一区二区三区大白胸 | 日韩一级片网址| 久久久久久久电影| 亚洲精品免费在线| 日韩精品福利网| 国产xxx精品视频大全| 97se亚洲国产综合在线| 欧美精品自拍偷拍| 国产丝袜美腿一区二区三区| 一区二区三区视频在线看| 青青草成人在线观看| 成人免费视频网站在线观看| 欧美精品精品一区| 国产精品水嫩水嫩| 亚洲mv大片欧洲mv大片精品| 九九国产精品视频| 一本久久a久久精品亚洲| 精品久久久久久久久久久院品网| 综合婷婷亚洲小说| 精品一区二区三区免费视频| 在线精品视频一区二区| 国产午夜精品一区二区| 视频一区二区三区在线| aa级大片欧美| 亚洲图片一区二区| 国产成人av电影在线| 制服丝袜亚洲色图| 中文字幕一区二区三区av| 美女视频一区在线观看| 在线中文字幕一区二区| 久久精品欧美一区二区三区不卡 | 99久久精品免费看国产| 日韩视频一区在线观看| 亚洲精品免费看| 丁香婷婷综合色啪| 欧美一区二区视频在线观看2020| 日韩理论片在线| 国产老女人精品毛片久久| 欧美精品99久久久**| 亚洲精品中文字幕在线观看| 国产99久久久久久免费看农村| 在线成人免费视频| 亚洲精品日日夜夜| 99国产欧美另类久久久精品| 久久久高清一区二区三区| 日韩va亚洲va欧美va久久| 91福利小视频| 综合亚洲深深色噜噜狠狠网站| 国产成人一区在线| 欧美精品一区二区精品网| 日本在线不卡视频一二三区| 欧美性猛交xxxxxx富婆| 亚洲欧美国产77777| 成人免费视频免费观看| 久久婷婷久久一区二区三区| 麻豆视频一区二区| 欧美福利一区二区| 亚洲国产aⅴ天堂久久| 在线观看一区不卡| 一区二区三区91| 欧美视频一区二区在线观看| 亚洲一区中文日韩| 在线观看日韩高清av| 亚洲一区二区三区在线播放| 色婷婷综合激情| 亚洲一区免费观看| 欧美日韩黄视频| 天天av天天翘天天综合网色鬼国产| 欧洲一区在线观看| 视频在线在亚洲| 欧美一级搡bbbb搡bbbb| 久久爱www久久做| 亚洲精品一区二区三区在线观看 | 日韩欧美资源站| 麻豆精品在线播放| 精品噜噜噜噜久久久久久久久试看| 蜜桃av一区二区在线观看| 精品国产自在久精品国产| 黄色日韩网站视频| 国产女人aaa级久久久级| 成人av电影在线播放| 亚洲色图在线播放| 91黄视频在线观看| 日韩精品乱码av一区二区| 日韩一区二区在线免费观看| 蜜臀久久久99精品久久久久久| 欧美一区二区三区四区视频 | 欧美刺激午夜性久久久久久久| 久久精品99国产精品| 久久久电影一区二区三区| eeuss鲁一区二区三区| 亚洲制服丝袜在线| 欧美mv和日韩mv的网站| 国产成人午夜99999| 亚洲卡通欧美制服中文| 91精品国产色综合久久久蜜香臀| 久久91精品久久久久久秒播| 国产亚洲美州欧州综合国| 91免费在线播放| 五月天国产精品| 久久久久成人黄色影片| 91日韩一区二区三区| 日韩激情中文字幕| 国产日本欧美一区二区| 在线观看一区日韩| 精品一二线国产| 亚洲欧美电影一区二区| 日韩欧美一区二区三区在线| 国产美女娇喘av呻吟久久| 亚洲欧美怡红院| 日韩欧美中文字幕精品| 99精品久久免费看蜜臀剧情介绍| 日韩国产欧美视频| 国产精品福利影院| 91精品国产色综合久久不卡电影 | 欧美视频在线观看一区二区| 另类小说一区二区三区| 亚洲欧洲另类国产综合| 91精品国产免费| 99re这里只有精品视频首页| 美女视频黄 久久| 激情六月婷婷久久| 亚洲欧美在线aaa| 精品久久人人做人人爰| 91成人国产精品| 国产成人8x视频一区二区| 日韩一区精品视频| 亚洲免费观看高清完整版在线观看熊 | 国产精品1区2区| 天堂va蜜桃一区二区三区| 综合久久综合久久| 日韩亚洲欧美在线| 欧美综合天天夜夜久久| 国产福利91精品一区| 秋霞电影一区二区| 亚洲欧美日韩国产另类专区 | 亚洲一二三区在线观看| 国产欧美日韩三区| 日韩一区二区三区高清免费看看| 色综合久久久久| 成人免费视频免费观看| 国产在线国偷精品免费看| 亚洲v中文字幕| 中文字幕中文在线不卡住| 精品国产乱码91久久久久久网站| 欧美性淫爽ww久久久久无| 成人国产精品免费观看动漫| 国内精品不卡在线| 日韩精品一二三| 午夜精品视频在线观看| 有坂深雪av一区二区精品| 中文字幕中文在线不卡住| 国产丝袜美腿一区二区三区| 欧美成人乱码一区二区三区| 欧美一二三在线| 欧美精品久久99久久在免费线 | 亚洲一区二区三区四区五区中文| 国产婷婷一区二区| 久久久国产精品不卡| 久久综合久久综合久久| 欧美sm极限捆绑bd| 日韩视频永久免费| 欧美大片日本大片免费观看|