Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
ChunkedInputStream.java
Package: HTTP客户端.zip [view]
Upload User: demmber
Upload Date: 2007-12-22
Package Size: 717k
Code Size: 3k
Category:
Java Develop
Development Platform:
Java
- /*
- * @(#)ChunkedInputStream.java 0.3-3 06/05/2001
- *
- * This file is part of the HTTPClient package
- * Copyright (C) 1996-2001 Ronald Tschal鋜
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307, USA
- *
- * For questions, suggestions, bug-reports, enhancement-requests etc.
- * I may be contacted at:
- *
- * ronald@innovation.ch
- *
- * The HTTPClient's home page is located at:
- *
- * http://www.innovation.ch/java/HTTPClient/
- *
- */
- package HTTPClient;
- import java.io.IOException;
- import java.io.EOFException;
- import java.io.InputStream;
- import java.io.FilterInputStream;
- /**
- * This class de-chunks an input stream.
- *
- * @version 0.3-3 06/05/2001
- * @author Ronald Tschal鋜
- */
- class ChunkedInputStream extends FilterInputStream
- {
- /**
- * @param is the input stream to dechunk
- */
- ChunkedInputStream(InputStream is)
- {
- super(is);
- }
- byte[] one = new byte[1];
- public synchronized int read() throws IOException
- {
- int b = read(one, 0, 1);
- if (b == 1)
- return (one[0] & 0xff);
- else
- return -1;
- }
- private long chunk_len = -1;
- private boolean eof = false;
- public synchronized int read(byte[] buf, int off, int len)
- throws IOException
- {
- if (eof) return -1;
- if (chunk_len == -1) // it's a new chunk
- {
- try
- { chunk_len = Codecs.getChunkLength(in); }
- catch (ParseException pe)
- { throw new IOException(pe.toString()); }
- }
- if (chunk_len > 0) // it's data
- {
- if (len > chunk_len) len = (int) chunk_len;
- int rcvd = in.read(buf, off, len);
- if (rcvd == -1)
- throw new EOFException("Premature EOF encountered");
- chunk_len -= rcvd;
- if (chunk_len == 0) // got the whole chunk
- {
- in.read(); // CR
- in.read(); // LF
- chunk_len = -1;
- }
- return rcvd;
- }
- else // the footers (trailers)
- {
- // discard
- Request dummy =
- new Request(null, null, null, null, null, null, false);
- new Response(dummy, null).readTrailers(in);
- eof = true;
- return -1;
- }
- }
- public synchronized long skip(long num) throws IOException
- {
- byte[] tmp = new byte[(int) num];
- int got = read(tmp, 0, (int) num);
- if (got > 0)
- return (long) got;
- else
- return 0L;
- }
- public synchronized int available() throws IOException
- {
- if (eof) return 0;
- if (chunk_len != -1)
- return (int) chunk_len + in.available();
- else
- return in.available();
- }
- }