httpstreamconnection.java

来自「This is a resource based on j2me embedde」· Java 代码 · 共 178 行

JAVA
178
字号
/* * HttpStreamconnection.java * * Copyright  1990-2008 Sun Microsystems, Inc. All Rights Reserved.   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER   *    * This program is free software; you can redistribute it and/or   * modify it under the terms of the GNU General Public License version   * 2 only, as published by the Free Software Foundation.    *    * This program is distributed in the hope that it will be useful, but   * WITHOUT ANY WARRANTY; without even the implied warranty of   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   * General Public License version 2 for more details (a copy is   * included at /legal/license.txt).    *    * You should have received a copy of the GNU General Public License   * version 2 along with this work; if not, write to the Free Software   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA   * 02110-1301 USA    *    * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa   * Clara, CA 95054 or visit www.sun.com if you need additional   * information or have any questions.  * *//** * HttpStreamConnection implements the StreamConnection * interface for a HTTP connection. This class is intended * to be used only by the HTTP protocol handler and will * open a socket connection to a given host and port. */package com.sun.cdc.io.j2me.http;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.DataInputStream;import java.io.DataOutputStream;import java.net.Socket;import javax.microedition.io.StreamConnection;import com.sun.cdc.io.j2me.UniversalFilterInputStream;import com.sun.cdc.io.j2me.UniversalFilterOutputStream;class HttpStreamConnection implements StreamConnection {    // If hostname is empty, use localhost    private final String LOCALHOST = "localhost";    // Current host name    private String host = null;    // port number    private int port = 0;    // Flag indicating the underlying TCP connection is open.    private boolean copen = false;    // Socket handle    private Socket socket;        private InputStream is;    private DataInputStream dis;    private OutputStream os;    private DataOutputStream dos;    public HttpStreamConnection(String host, int port) throws IOException {	if (port < 0) {	    throw new IllegalArgumentException("bad port number: " + port);	}        this.host = host;        this.port = port;        final String hostName;	if (host == null || host.length() == 0) {	    hostName = LOCALHOST;	} else {	    hostName = host;	}        final int portNum = port;        try {            socket = (Socket)java.security.AccessController.doPrivileged(                     new java.security.PrivilegedExceptionAction() {                         public Object run() throws                             java.security.PrivilegedActionException,                             IOException {                                 return new Socket(hostName, portNum);                         }                      });        } catch (java.security.PrivilegedActionException pae) {            IOException ioe = (IOException)pae.getException();            throw ioe;        }        copen = true;    }    /**     * Returns the InputStream associated with this HttpStreamConnection.     *     * @return InputStream object from which bytes can be read     * @exception IOException if the connection is not open or the stream was      * already open     */     synchronized public InputStream openInputStream() throws IOException {        if (!copen) {            throw new IOException("Connection closed");        }        if (is == null)            is = new UniversalFilterInputStream(this, socket.getInputStream());        return is;    }        /**     * Returns the OutputStream associated with this HttpStreamConnection.     *      * @return OutputStream object for writing bytes over this connection     * @exception IOException if the connection is not open or the stream was      * already open     */    synchronized public OutputStream openOutputStream() throws IOException {        if (!copen) {            throw new IOException("Connection closed");        }        if (os == null)            os = new UniversalFilterOutputStream(                        this, socket.getOutputStream());        return os;    }        /**     * Returns the DataInputStream associated with this HttpStreamConnection.     * @exception IOException if the connection is not open or the stream was      * already open     * @return a DataInputStream object     */     public DataInputStream openDataInputStream() throws IOException {        if (dis == null)            dis = new DataInputStream(openInputStream());        return dis;    }         /**      * Returns the DataOutputStream associated with this HttpStreamConnection.     * @exception IOException if the connection is not open or the stream was      * already open     * @return a DataOutputStream object     */    public DataOutputStream openDataOutputStream() throws IOException {        if (dos == null)            dos = new DataOutputStream(openOutputStream());        return dos;    }                /**     * Closes the connection. The underlying TCP socket is also closed.     * @exception IOException if the connection could not be     *                        terminated cleanly     */     synchronized public void close() throws IOException {        if (copen) {            copen = false;            socket.close();            is = null;            os = null;            dis = null;            dos = null;        }        return;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?