GZipInput/Output stream problems
Hi,
Im trying to compress the data sent over a socket with Gzip.
try
{
// Get the list of processes.
Socket socket =new Socket(_server.getHost(), _server.getPort());
// Need to connect to server and send request type,
// ie what we are requesting to be sent to us
GZIPOutputStream gZipOut =new GZIPOutputStream(socket.getOutputStream());
ObjectOutputStream out =new ObjectOutputStream(gZipOut);
CSSO.debug("Opened output socket for sending request "+socket);
try
{
Thread.sleep(longSleep);
}
catch(InterruptedException x)
{
// just ignore.
}
out.writeInt(requestType);
CSSO.debug("Wrote request type "+requestType);
out.flush();
gZipOut.finish();
try
{
Thread.sleep(mediumSleep);
}
catch(InterruptedException x)
{
FLOW.debug("Thread.sleep x was interrupted");
}
// we now need to read the responses off
// the socket.
CSSO.debug("Opening response input stream for processes from socket "+socket );
GZIPInputStream gZipIn =new GZIPInputStream(socket.getInputStream());
ObjectInputStream in =new ObjectInputStream(gZipIn);//error line
CSSO.debug("Opened input socket for receiving data "+socket);
try
{
Thread.sleep(shortSleep);
}
catch(InterruptedException x)
{
FLOW.debug("Thread.sleep x was interrupted");
}
The output part seems to work fine, but when it gets to this line :
ObjectInputStream in =new ObjectInputStream(gZipIn);
I get the following exception:
java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:216)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:134)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:87)
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2217)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2230)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2698)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:750)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:268)
Can anyone help :(
Thanks,
James

