RES: [java-list] Problema com Sockets e GZip Streams

2002-07-13 Por tôpico m . quintella

Evite colocar a GZIPInputStream em torno da sua socket.getInputStream(). 

O que acontece eh que a GZip nao manda tudo assim que voce der o flush ou 
mesmo o close. Ela espera um certo "tamanho" para fazer a compressao e soh 
entao os seus dados serao enviados entre client e servido. 

O que voce deveria fazer eh criar a GZip em torno de ByteArrayInputStream 
(ou OutputStream) e entao pegar o bytearray dela e enviar. Do outro lado da 
conexao voce faz o processo inverso. 

Para comprimir: 

  ObjectOutputStream os = new ObjectOutputStream(new   
GZIPOutputStream(baos)); 
  os.writeObject(object); 
  os.close();//forces a flush 
  byte[] rv = baos.toByteArray(); 

Para descomprimir: 

  ObjectInputStream ois = new ObjectInputStream(new GZIPInputStream(new 
ByteArrayInputStream(compressed))); 
  Object rv = ois.readObject(); 
  ois.close(); 

Precisando de mais detalhes avise. 

Abracos, 
Marcelo Quintella 



- Original Message - 
From: "Rosfran Lins Borges" <[EMAIL PROTECTED]> 
To: <[EMAIL PROTECTED]> 
Sent: Friday, July 12, 2002 8:44 AM 
Subject: RES: [java-list] Problema com Sockets e GZip Streams 



   Você vai precisar colocar um ServerSocket em cada umas das extremidades 
de conexão. Além disso, você deve escolher valores não coincidentes para as 
portas de envio e recebimento. Ou seja, o seu Socket e o seu ServerSocket 
devem operar em portas diferentes na mesma máquina, e a extremidade remota 
deve conectar o seu Socket à porta na qual o ServerSocket opera, e o Socket 
local deve se conectar à porta do ServerSocket remoto. 
   O que deve estar havendo é que houve um conflito nesse mapeamento, tipo, 
o Socket e o ServerSocket estão rodando com a mesma porta, ou então 
aconteceu um engano na hora de conectar o Socket remoto com o ServerSocket 
(ou vice-versa)... 

Rosfran Lins Borges 
Analista de Sistemas - NDS 
[EMAIL PROTECTED] 
Fóton® Informática e Serviços 
Fone: (61) 328 5060 R.: 204 


-Mensagem original- 
De: marco [mailto:[EMAIL PROTECTED]] 
Enviada em: quinta-feira, 11 de julho de 2002 14:56 
Para: [EMAIL PROTECTED] 
Assunto: [java-list] Problema com Sockets e GZip Streams 


Olá amigos! 
Estava utilizando um client/server em Java usando objetos serializados. 
Então, pensei em utilizar a GZipOutputStream e a GZIPInputStream para a 
conversa entre o client/server ter o conteúdo comprimido. Utilizei o 
código do site developer da Sun: 

 
// write to client 
GZIPOutputStream gzipout = new 
GZIPOutputStream(socket.getOutputStream()); 
ObjectOutputStream oos = new 
ObjectOutputStream(gzipout); 
oos.writeObject(obj); 
gzipout.finish(); 

And, the following segment of code shows how to decompress the objects 
at the client side once received from the server: 

// read from server 
Socket socket = new Socket(remoteServerIP, PORT); 
GZIPInputStream gzipin = new 
GZIPInputStream(socket.getInputStream()); 
ObjectInputStream ois = new ObjectInputStream(gzipin); 
Object o = ois.readObject(); 
*** 

Até aí, nenhum problema. 
Tentei então fazer a conversa bidirecional ao invés de somente 
unidirecional. Mas então o client e o server compilam, mas na hora de 
rodar não consigo resposta. É só fazer o programa voltar a ser 
unidirecional que funciona. O que está havendo de errado? 
Se alguém quiser ver o código inteiro, está em: 
http://www.grad.icmc.usp.br/~rael/prog/client_server.zip 



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm 
regras da lista: http://www.soujava.org.br/regras.htm 
historico: http://www.mail-archive.com/java-list%40soujava.org.br 
para sair da lista: envie email para [EMAIL PROTECTED] 
- 

-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm 
regras da lista: http://www.soujava.org.br/regras.htm 
historico: http://www.mail-archive.com/java-list%40soujava.org.br 
para sair da lista: envie email para [EMAIL PROTECTED] 
- 

_
Oi! Você quer um iG-mail gratuito?
Então clique aqui: http://registro.ig.com.br/


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-




RES: [java-list] Problema com Sockets e GZip Streams

2002-07-12 Por tôpico Rosfran Lins Borges


   Você vai precisar colocar um ServerSocket em cada umas das extremidades
de conexão. Além disso, você deve escolher valores não coincidentes para as
portas de envio e recebimento. Ou seja, o seu Socket e o seu ServerSocket
devem operar em portas diferentes na mesma máquina, e a extremidade remota
deve conectar o seu Socket à porta na qual o ServerSocket opera, e o Socket
local deve se conectar à porta do ServerSocket remoto. 
   O que deve estar havendo é que houve um conflito nesse mapeamento, tipo,
o Socket e o ServerSocket estão rodando com a mesma porta, ou então
aconteceu um engano na hora de conectar o Socket remoto com o ServerSocket
(ou vice-versa)...

Rosfran Lins Borges
Analista de Sistemas - NDS
[EMAIL PROTECTED]
Fóton® Informática e Serviços
Fone: (61) 328 5060 R.: 204


-Mensagem original-
De: marco [mailto:[EMAIL PROTECTED]] 
Enviada em: quinta-feira, 11 de julho de 2002 14:56
Para: [EMAIL PROTECTED]
Assunto: [java-list] Problema com Sockets e GZip Streams


Olá amigos!
Estava utilizando um client/server em Java usando objetos serializados. 
Então, pensei em utilizar a GZipOutputStream e a GZIPInputStream para a 
conversa entre o client/server ter o conteúdo comprimido. Utilizei o 
código do site developer da Sun:


// write to client
GZIPOutputStream gzipout = new
GZIPOutputStream(socket.getOutputStream());
ObjectOutputStream oos = new
ObjectOutputStream(gzipout);
oos.writeObject(obj);
gzipout.finish();

And, the following segment of code shows how to decompress the objects 
at the client side once received from the server:

// read from server
Socket socket = new Socket(remoteServerIP, PORT);
GZIPInputStream gzipin = new
GZIPInputStream(socket.getInputStream());
ObjectInputStream ois = new ObjectInputStream(gzipin);
Object o = ois.readObject();
***

Até aí, nenhum problema.
Tentei então fazer a conversa bidirecional ao invés de somente 
unidirecional. Mas então o client e o server compilam, mas na hora de 
rodar não consigo resposta. É só fazer o programa voltar a ser 
unidirecional que funciona. O que está havendo de errado?
Se alguém quiser ver o código inteiro, está em:
http://www.grad.icmc.usp.br/~rael/prog/client_server.zip



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-

-- LISTA SOUJAVA 
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED]
-




Re: [java-list] Problema com Sockets e GZip Streams

2002-07-12 Por tôpico Claudio Miranda


No caso do 'write to client', o gzipout.finish() quando invocado não permite 
mais 
enviar dados, pois finalizou o stream sem fechar.

[]s

Claudio Miranda


marco wrote:
> 
> Olá amigos!
> Estava utilizando um client/server em Java usando objetos serializados. 
> Então, pensei em utilizar a GZipOutputStream e a GZIPInputStream para a 
> conversa entre o client/server ter o conteúdo comprimido. Utilizei o 
> código do site developer da Sun:
> 
> 
> // write to client
> GZIPOutputStream gzipout = new
> GZIPOutputStream(socket.getOutputStream());
> ObjectOutputStream oos = new
> ObjectOutputStream(gzipout);
> oos.writeObject(obj);
> gzipout.finish();
> 
> And, the following segment of code shows how to decompress the objects 
> at the client side once received from the server:
> 
> // read from server
> Socket socket = new Socket(remoteServerIP, PORT);
> GZIPInputStream gzipin = new
> GZIPInputStream(socket.getInputStream());
> ObjectInputStream ois = new ObjectInputStream(gzipin);
> Object o = ois.readObject();
> ***
> 
> Até aí, nenhum problema.
> Tentei então fazer a conversa bidirecional ao invés de somente 
> unidirecional. Mas então o client e o server compilam, mas na hora de 
> rodar não consigo resposta. É só fazer o programa voltar a ser 
> unidirecional que funciona. O que está havendo de errado?
> Se alguém quiser ver o código inteiro, está em:
> http://www.grad.icmc.usp.br/~rael/prog/client_server.zip


-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-




[java-list] Problema com Sockets e GZip Streams

2002-07-11 Por tôpico marco


Olá amigos!
Estava utilizando um client/server em Java usando objetos serializados. 
Então, pensei em utilizar a GZipOutputStream e a GZIPInputStream para a 
conversa entre o client/server ter o conteúdo comprimido. Utilizei o 
código do site developer da Sun:


// write to client
GZIPOutputStream gzipout = new
GZIPOutputStream(socket.getOutputStream());
ObjectOutputStream oos = new
ObjectOutputStream(gzipout);
oos.writeObject(obj);
gzipout.finish();

And, the following segment of code shows how to decompress the objects 
at the client side once received from the server:

// read from server
Socket socket = new Socket(remoteServerIP, PORT);
GZIPInputStream gzipin = new
GZIPInputStream(socket.getInputStream());
ObjectInputStream ois = new ObjectInputStream(gzipin);
Object o = ois.readObject();
***

Até aí, nenhum problema.
Tentei então fazer a conversa bidirecional ao invés de somente 
unidirecional. Mas então o client e o server compilam, mas na hora de 
rodar não consigo resposta. É só fazer o programa voltar a ser 
unidirecional que funciona. O que está havendo de errado?
Se alguém quiser ver o código inteiro, está em:
http://www.grad.icmc.usp.br/~rael/prog/client_server.zip



-- LISTA SOUJAVA  
http://www.soujava.org.br  -  Sociedade de Usuários Java da Sucesu-SP 
dúvidas mais comuns: http://www.soujava.org.br/faq.htm
regras da lista: http://www.soujava.org.br/regras.htm
historico: http://www.mail-archive.com/java-list%40soujava.org.br
para sair da lista: envie email para [EMAIL PROTECTED] 
-