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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tcpconnectionhandler.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.Enumeration;
import java.util.Vector;
import javax.microedition.io.SocketConnection;


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

    private final TCPServer parent;
    private final TCPConnectionHandlerListener listener;
    private final SocketConnection socketConnection;
    private final Vector writeQueue = new Vector();

    private volatile boolean aborting = false;
    private OutputStream out = null;
    private InputStream in = null;


    TCPConnectionHandler(TCPServer parent,
                         SocketConnection socketConnection,
                         TCPConnectionHandlerListener listener)
    {
        this.parent = parent;
        this.socketConnection = socketConnection;
        this.listener = listener;

        Thread readThread = new Thread(this);
        readThread.start();
    }


    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
                }
            }

            try
            {
                socketConnection.close();
            }
            catch (Exception e)
            {
                // there is nothing we can do: ignore
            }
        }
    }


    // Handle the TCP connection (open, close) and received messages

    public void run()
    {
        // may throw IOException
        String socketAddress = "";
        int socketPort = 0;
        try
        {
            socketAddress = socketConnection.getAddress();
            socketPort = socketConnection.getPort();
            out = socketConnection.openOutputStream();
            in = socketConnection.openInputStream();

            startWriteQueue();

            // tell the listener about the new connection
            listener.handleConnectionOpen(
                         this,
                         socketAddress,
                         socketPort);
        }
        catch (IOException e)
        {
            close();
            listener.handleConnectionOpenError(
                         this,
                         socketAddress,
                         socketPort);
            return;
        }

        // read data from TCP connection
        while (!aborting)
        {
            try
            {
                // read message header (length bytes)
                byte[] lengthBytes = new byte[LENGTH_MAX_DIGITS];
                readFully(in, lengthBytes);
                int length = readLength(lengthBytes);

                // read message contents
                byte[] contentBytes = new byte[length];
                readFully(in, contentBytes);
                if (listener != null)
                {
                    listener.handleConnectionMessage(this,
                                                     socketAddress,
                                                     socketPort,
                                                     contentBytes);
                }
            }
            catch (IOException e)
            {
                // We assume that an IOException here means that
                // the remote TCP client has disconnected.
                // So we close the streams and the socket connection,
                // and inform the listener.

                close();
                listener.handleConnectionClose(this,
                                               socketAddress,
                                               socketPort);
                parent.handleClose(this); // remove from server's list

                // stop running
                return;
            }
        }

        // We don't need to close connections + streams here. Either
        // our parent has called method 'close' to stop us from
        // running, or we've done called method 'close' ourself in
        // handling the IOException above.
    }


    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 int readLength(byte[] buffer)
    {
        int value = 0;

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


    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;
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av欧美精品.com| 欧美性猛交xxxx乱大交退制版| 中文字幕在线观看一区二区| 欧美高清www午色夜在线视频| 成人永久免费视频| 亚洲国产wwwccc36天堂| 国产欧美日本一区视频| 91麻豆精品久久久久蜜臀| 99久久综合国产精品| 精品中文av资源站在线观看| 亚洲国产日日夜夜| 日韩一区在线免费观看| 26uuu欧美日本| 日韩欧美成人激情| 欧美色图激情小说| 日本韩国精品在线| 国产成人超碰人人澡人人澡| 美女高潮久久久| 无码av中文一区二区三区桃花岛| 亚洲欧美日韩国产另类专区| 国产日韩v精品一区二区| 精品久久一区二区| 欧美一级片免费看| 欧美男男青年gay1069videost| 色综合中文字幕国产 | 日韩美一区二区三区| 91久久国产最好的精华液| 丁香婷婷综合色啪| 国产高清不卡一区二区| 国产一区啦啦啦在线观看| 另类中文字幕网| 日韩经典一区二区| 偷拍自拍另类欧美| 日韩不卡一区二区| 日本视频在线一区| 秋霞影院一区二区| 免费在线看成人av| 麻豆成人91精品二区三区| 日韩中文字幕区一区有砖一区 | 婷婷综合在线观看| 亚洲一区在线观看免费| 亚洲影院在线观看| 一区二区欧美在线观看| 夜夜嗨av一区二区三区网页| 亚洲黄色免费网站| 亚洲h精品动漫在线观看| 亚洲电影中文字幕在线观看| 亚洲第一激情av| 轻轻草成人在线| 久久99精品国产麻豆不卡| 久久 天天综合| 精品一区二区影视| 国产不卡视频在线播放| 成人性色生活片| 99精品久久99久久久久| 日本韩国欧美三级| 91精品国产91久久综合桃花| 欧美一区二区三区在线观看视频| 日韩一区二区在线免费观看| 精品国产一区二区三区av性色| 欧美精品一区二区三区视频| 亚洲国产成人在线| 亚洲欧美日韩国产成人精品影院| 亚洲444eee在线观看| 蜜桃一区二区三区在线| 国产精品中文字幕一区二区三区| 成人自拍视频在线观看| 欧美伊人久久久久久午夜久久久久| 欧美日韩一卡二卡三卡| 久久综合久色欧美综合狠狠| 国产精品三级电影| 亚洲成人动漫精品| 国产精品亚洲视频| 欧美午夜理伦三级在线观看| 欧美精品一区二区精品网| 国产精品网站导航| 亚洲成人av电影在线| 国产综合成人久久大片91| 日本韩国欧美三级| 精品免费视频一区二区| 国产精品国产三级国产专播品爱网 | 欧美精品久久一区二区三区| 精品久久国产字幕高潮| 1024国产精品| 久久精品国产免费| 91在线视频免费观看| 在线综合亚洲欧美在线视频| 中文字幕精品综合| 日韩一区欧美二区| 91玉足脚交白嫩脚丫在线播放| 91麻豆精品国产91久久久资源速度 | 国产精品欧美精品| 日韩精品久久久久久| 99re这里只有精品6| 欧美成人三级在线| 樱花影视一区二区| 国产xxx精品视频大全| 欧美日韩不卡一区二区| 中文子幕无线码一区tr| 另类中文字幕网| 99热这里都是精品| 久久亚洲二区三区| 日韩av中文字幕一区二区三区| 97久久精品人人爽人人爽蜜臀| 日韩欧美一级二级三级| 亚洲欧美日韩国产一区二区三区| 国产精品原创巨作av| 91精品国产91久久久久久一区二区| 亚洲视频电影在线| 国产成人精品免费| xfplay精品久久| 日韩国产欧美在线视频| 欧美性大战久久久久久久| 国产精品国产三级国产| 韩国精品免费视频| 91精品国产一区二区三区蜜臀| 有坂深雪av一区二区精品| 成人免费视频一区| 久久亚洲春色中文字幕久久久| 男女性色大片免费观看一区二区| 欧美日韩在线亚洲一区蜜芽| 日韩毛片一二三区| 成人国产视频在线观看| 国产丝袜美腿一区二区三区| 精品一区二区三区不卡| 日韩三级精品电影久久久 | 亚洲国产另类精品专区| 色婷婷综合五月| 1区2区3区精品视频| a4yy欧美一区二区三区| 国产精品久久久一本精品| 国产精品99久久久久久似苏梦涵| 精品国产欧美一区二区| 另类小说欧美激情| 日韩午夜精品视频| 久草中文综合在线| 欧美mv和日韩mv的网站| 狠狠色丁香九九婷婷综合五月| 日韩精品一区二区在线观看| 久久精品国产网站| 久久精品水蜜桃av综合天堂| 国产成人综合网站| 国产精品美女久久久久久久| 成人av免费网站| 日韩理论片网站| 精品视频在线视频| 日韩精品乱码免费| 精品福利一区二区三区免费视频| 国内成人免费视频| 欧美激情在线看| 91社区在线播放| 亚洲国产欧美日韩另类综合 | 国产亚洲污的网站| 99精品黄色片免费大全| 亚洲一区二区综合| 日韩欧美中文字幕制服| 天天影视涩香欲综合网| 亚洲成av人片一区二区三区| 亚洲成人综合在线| 国产一区视频在线看| 色先锋久久av资源部| 亚洲一级不卡视频| 91精品国产一区二区三区| 久久成人免费网| 国产精品久久久爽爽爽麻豆色哟哟| 色婷婷精品久久二区二区蜜臀av | 不卡视频一二三四| 亚洲国产一区二区a毛片| 欧美大片在线观看一区二区| 国产成人综合视频| 伊人色综合久久天天| 欧美一级淫片007| av午夜一区麻豆| 丝袜美腿亚洲色图| 国产日韩av一区| 欧美日韩久久久久久| 国产精品综合视频| 洋洋av久久久久久久一区| 精品国一区二区三区| 91麻豆免费观看| 久久精品国产一区二区三| 亚洲婷婷综合色高清在线| 日韩欧美亚洲一区二区| 91小视频在线| 国产一区二区精品久久| 亚洲午夜精品17c| 国产午夜精品在线观看| 欧美日韩精品久久久| 成人18精品视频| 狠狠色狠狠色合久久伊人| 亚洲乱码国产乱码精品精98午夜 | 久久先锋影音av鲁色资源| 91免费看`日韩一区二区| 日本sm残虐另类| 亚洲丝袜另类动漫二区| 精品成人免费观看| 欧美日韩视频一区二区| 99在线精品观看| 国产一区二区视频在线播放| 婷婷成人激情在线网|