Eww! API proprietaria não é recomendada. Essa solução de utilizar 2 ServerSockets separados foi exatemente o que eu falei a algumas mensagens atrás.
2008/12/7 Peter P. Lupo <[EMAIL PROTECTED]> > Você não conseguiria abrir duas conexões na mesma porta ao mesmo tempo de > qualquer forma. > > Vc tb pode encode a imagem num array de bytes e decode depois... > > > http://java.sun.com/j2se/1.5.0/docs/guide/2d/api-jpeg/com/sun/image/codec/jpeg/JPEGCodec.html > http://www.guj.com.br/posts/list/99112.java > > > Peter P. Lupo > Undergraduating in Computer Science DCC/UFRJ > MPS.BR Authorized Implementation Practitioner > Sun Certified Java Associate > http://pplupo.googlepages.com/ > Cell. +55 (021) 81742487 > > > 2008/12/7 Pedro Philippe Rosanes <[EMAIL PROTECTED]> > >> Na verdade o problema é o mesmo to anterior. >> >> Como bufferedImage não é serializavel, nao podemos enviar uma >> bufferedImage por um ObjectOutputStream(socket.getOutputStream). >> Então temos de usar ImageIO.write( socket.getOutputStream ). >> Mas, já temos uma instancia que usa esse socket.getOutputStream, e nao >> podemos ter 2 instancias diferentes que usam o mesmo stream. >> Por isso da erro no projeto verdadeiro, mas nao da erro no projeto a >> parte. >> >> Uma solucao que pensei foi criar uma conexão só para envio de imagens e >> outra só para o envio de informações da urna. >> Para isso teria de identificar de alguma forma para o servidor e para o >> cliente qual conexão esta sendo feito. Então pensei em usar duas portas >> diferentes, assim teria um ServerSocket para cada porta, e consequentemente >> para cada tipo de conexao. >> Existe problema em usar portas diferentes ? >> >> >> Zaedy Sayão escreveu: >> >> Entao, se vira nos 30.....rsrs >> >> Ainda nao entendi pq ta dando problema na hora de colocar tudo junto..... >> >> Lanca alguma excecao? Viu se tem processo nao encerrado? >> >> []'s >> >> 2008/12/6 Felipe Ruiz <[EMAIL PROTECTED]> >> >>> >>> O restante já está pronto. Só falta isso. >>> >>> On 6 dez, 14:07, "Zaedy Sayão" <[EMAIL PROTECTED]> wrote: >>> > Cara, >>> > >>> > se a aplicacao em separada funciona nao tem pq nao funcionar no seu >>> projeto >>> > todo. >>> > Vc nao ta sabendo readaptar ela. >>> > >>> > Se nao conseguir deixei separado, mas o correto eh deixar junto e vc >>> deve >>> > perder algo nisso, mas se nao conseguir, fazer o q :( >>> > >>> > Se atenha primeiro em acabar o restante e depois se prenda nisso, pq >>> tem >>> > pouco tempo. >>> > De certa forma, vc vai ter atendido ao requisito da foto. >>> > >>> > []'s >>> > >>> > 2008/12/6 Flavio Costa <[EMAIL PROTECTED]> >>> > >>> > > Existe alguma exceção que é disparada quando, no projeto de verdade, >>> a >>> > > imagem não consegue ser transferida? >>> > > O que acontece de fato? A transferência nunca termina? >>> > >>> > > 2008/12/6 Felipe Ruiz <[EMAIL PROTECTED]> >>> > >>> > >> O aplicativo que consegue enviar a imagem foi feito só pra enviar a >>> > >> imagem. Quando eu o fiz, como eu não sabia se ia funcionar ou não, >>> fiz >>> > >> em um projeto separado para não estragar o original. Na verdade ele >>> é >>> > >> uma modificação de um código do GUJ. >>> > >> Para enviar eu pego o caminho da foto, "leio" o caminho através do >>> > >> método read() da ImageIO e depois uso o write(), também da ImageIO, >>> > >> para escrever num DataOutputStream - fazendo new DataOutputStream >>> > >> (socket.getOutputStream()). Para receber eu crio uma InputStream >>> > >> (socket.getInputStream()), uso o método read() da ImageIO pra ler >>> > >> desse InputStream e depois uso o write() pra "escrever" no HD. >>> > >> No projeto de "verdade" eu tento fazer a mesma coisa, só que não >>> > >> adianta. >>> > >>> > >> On 6 dez, 00:25, "Flavio Costa" <[EMAIL PROTECTED]> wrote: >>> > >> > Qual a diferença entre esse "mini" aplicativo *standalone* que >>> consegue >>> > >> > enviar a imagem corretamente e a aplicação de "verdade"? >>> > >> > Vamos supor o seguinte modelo: >>> > >> > * >>> > >> > Entidade Candidato:* >>> > >>> > >> > - Integer id >>> > >> > - String nome >>> > >> > - String partido >>> > >> > - String foto >>> > >>> > >> > Essa propriedade *foto* é apenas o caminho no sistema de arquivos >>> de >>> > >> onde a >>> > >> > foto está guardada (ex: *resources/images/canditato-<id>.jpg*) >>> > >> > Ao serializar este objeto, você não estará serializando a foto >>> junto, >>> > >> logo >>> > >> > você precisará de outro Socket (e provavelmente outro ServerSocket >>> no >>> > >> > servidor) que sirva apenas para transferir *bytes* ou seja, você >>> irá >>> > >> > utilizar um *FileInputStream* do lado cliente para ler a imagem e >>> > >> escrever >>> > >> > no seu Socket, e do lado servidor este apenas irá escrever a >>> imagem no >>> > >> lugar >>> > >> > adequado (isso talvez iria acarretar a necessidade de *avisar *ao >>> > >> servidor a >>> > >> > quem a foto que está sendo transferida pertence)... >>> > >>> > >> > Não sei se ficou bem claro, mas resumindo a idéia e não tentar >>> > >> serializar a >>> > >> > imagem e sim transferí-la como ela é, *byte a byte*. Note que >>> existe uma >>> > >> > grande diferença entre essas duas situações. >>> > >>> > >> > []'s >>> > >>> > >> > 2008/12/6 Felipe Ruiz <[EMAIL PROTECTED]> >>> > >>> > >> > > Quando tem alguma imagem cadastrada ele não consegue ler a >>> imagem. Eu >>> > >> > > já tentei usar tanto ObjectInputStream/ObjectOutputStream e >>> ImageIO >>> > >> > > pra receber a imagem, mas nenhum dos dois funciona. Ele fica >>> tentando >>> > >> > > ler a imagem até dar timeout. >>> > >>> > >> > > On 6 dez, 00:06, "Flavio Costa" <[EMAIL PROTECTED]> wrote: >>> > >> > > > Dá que tipo de merda? >>> > >> > > > As vezes podemos tentar ajudar a resolver. >>> > >>> > >> > > > []'s >>> > >>> > >> > > > 2008/12/5 Felipe Ruiz <[EMAIL PROTECTED]> >>> > >>> > >> > > > > Outra dúvida. Na hora de enviar as imagens do servidor pro >>> > >> cliente, >>> > >> > > > > quando tento fazer isso no projeto dá merda. Porém, se eu >>> faço em >>> > >> um >>> > >> > > > > projeto separado eu consigo. Na hora de apresentar eu posso >>> ter um >>> > >> > > > > programa auxiliar só pra enviar as imagens rodando? >>> > >>> > >> > > > > On 30 nov, 16:28, "Flavio Costa" <[EMAIL PROTECTED]> >>> wrote: >>> > >> > > > > > ServerSockets não possuem Streams de I/O apenas aceitam >>> conexões >>> > >> e >>> > >> > > criam >>> > >> > > > > > Sockets. >>> > >> > > > > > Acho que o Buss me fez lembrar de uma coisa, você está >>> usando um >>> > >> > > > > > ObjectInputStream em uma ponta e um ObjectOutputStream do >>> outro >>> > >> lado >>> > >> > > > > certo? >>> > >> > > > > > Essa idéia de decorar o seu Socket.getInputStream num >>> > >> > > BufferedInputStream >>> > >> > > > > é >>> > >> > > > > > boa, vale a pena tentar. >>> > >>> > >> > > > > > ObjectInputStream in = new ObjectInputStream(new >>> > >> > > > > > BufferedInputStream(socket.getInputStream())) >>> > >>> > >> > > > > > 2008/11/30 Peter P. Lupo <[EMAIL PROTECTED]> >>> > >>> > >> > > > > > > Seu socket é um Socket, um ServerSocket, um SSLSocket ou >>> o >>> > >> que? >>> > >> > > > > > > Já tentou encapsular num BufferedInputStream antes de >>> passar >>> > >> pro >>> > >> > > > > > > ObjectInputStream? >>> > >> > > > > > > Se vc estiver usando ServerChannel, por acaso vc setou >>> > >> blocking pra >>> > >> > > > > > > false? isto pode causar esta exceção... >>> > >> > > > > > > mande o código para algum dos monitores... >>> > >>> > >> > > > > > > Peter P. Lupo >>> > >> > > > > > > Undergraduating in Computer Science DCC/UFRJ >>> > >> > > > > > > MPS.BR Authorized Implementation Practitioner >>> > >> > > > > > > Sun Certified Java Associate >>> > >> > > > > > >http://pplupo.googlepages.com/ >>> > >> > > > > > > Cell. +55 (021) 81742487 >>> > >>> > >> > > > > > > 2008/11/30 Bruno Buss <[EMAIL PROTECTED]>: >>> > >> > > > > > > > Felipe... acho que você conseguiu ver que uma simples >>> linha, >>> > >> pode >>> > >> > > > > > > disparar >>> > >> > > > > > > > um efeito em cascata, que lá na décima chamada, ele da >>> um >>> > >> > > > > exception... >>> > >> > > > > > > foi o >>> > >> > > > > > > > que aconteceu com o seu código. >>> > >>> > >> > > > > > > > Por causa do nível de abstração de java... não >>> interprete >>> > >> tudo >>> > >> > > como >>> > >> > > > > "uma >>> > >> > > > > > > > simples linha" ;) >>> > >>> > >> > > > > > > > Assuma que eu não sei nada em Java.... porque não sei. >>> Mas >>> > >> vou >>> > >> > > tentar >>> > >> > > > > dar >>> > >> > > > > > > > meu chute do que está acontecendo. >>> > >>> > >> > > > > > > > Bem, até onde li a classe ObjectInputStream serve para >>> > >> > > deserializar >>> > >> > > > > > > > dados/objetos antes serializados com a classe >>> > >> ObjectOutputStream. >>> > >> > > > > > > > (Totalmente copiado da API: >>> > >>> > >> > > >>> http://java.sun.com/javase/6/docs/api/java/io/ObjectInputStream.html >>> > >> > > > > ). >>> > >>> > >> > > > > > > > Bem, suponho então que para transmitir os dados do >>> cliente >>> > >> para o >>> > >> > > > > > > servidor, >>> > >> > > > > > > > você esteja serializado-os com ObjectOutputStream, >>> > >> conectando ao >>> > >> > > > > socket, >>> > >> > > > > > > > enviando, recebendo do outro lado (pelo >>> > >> socket.getInputStream()) >>> > >> > > e >>> > >> > > > > > > > deserializando com o ObjectInputStream, cheguei perto >>> até >>> > >> aqui? >>> > >>> > >> > > > > > > > Vamos ver o que a função que causa o exception faz: >>> > >> > > > > > > > "The readStreamHeader method is provided to allow >>> subclasses >>> > >> to >>> > >> > > read >>> > >> > > > > and >>> > >> > > > > > > > verify their own stream headers. It reads and verifies >>> the >>> > >> magic >>> > >> > > > > number >>> > >> > > > > > > and >>> > >> > > > > > > > version number. " >>> > >>> > >> > > > > > > > Então basicamente, ele le o cabeçalho do stream para >>> > >> verificar se >>> > >> > > > > esta >>> > >> > > > > > > tudo >>> > >> > > > > > > > certo. >>> > >>> > >> > > > > > > > Porém ela está lançando uma StreamCorruptedException, >>> que é >>> > >> > > lançada >>> > >> > > > > > > quando: >>> > >> > > > > > > > "if control information in the stream is >>> inconsistent". >>> > >>> > >> > > > > > > > Logo, está chegando alguma porcaria que não deveria >>> ai. >>> > >> > > > > > > > Logo, eu consigo pensar em 2 coisas: >>> > >>> > >> > > > > > > > a) Este socket está sendo reutilizado? Ou ele pode >>> conter >>> > >> alguma >>> > >> > > > > > > "sujeira" >>> > >> > > > > > > > ou resíduo de alguma comunicação anterior? Teria como >>> você >>> > >> tentar >>> > >> > > > > limpar >>> > >> > > > > > > o >>> > >> > > > > > > > buffer dele, antes de receber os dados? >>> > >> > > > > > > > b) Este socket tem alguma coisa? Talvez por algum >>> motivo, >>> > >> quando >>> > >> > > o >>> > >> > > > > seu >>> > >> > > > > > > > ObjectInputStream é inicializado, o socket ainda não >>> tenha >>> > >> > > recebido >>> > >> > > > > > > nenhum >>> > >> > > > > > > > dado? Não seria possível antes de inicializar o >>> > >> > > ObjectInputStream, >>> > >> > > > > fazer >>> > >> > > > > > > um >>> > >> > > > > > > > probe no socket para ver se ele ja tem informação no >>> buffer? >>> > >>> > >> > > > > > > > 2008/11/30 Zaedy Sayão <[EMAIL PROTECTED]> >>> > >>> > >> > > > > > > >> Isso ae pq ate agora eu nao entendi o q vc esta >>> tentando >>> > >> fazer e >>> > >> > > > > qual o >>> > >> > > > > > > >> problema real. >>> > >>> > >> > > > > > > >> Qual a linha nao descreve o problema nem o pq do >>> erro...... >>> > >>> > >> > > > > > > >> []'s >>> > >>> > >> > > > > > > >> 2008/11/30 Flavio Costa <[EMAIL PROTECTED]> >>> > >>> > >> > > > > > > >>> Acho que assim vai ser dificil solucionar algum >>> problema. >>> > >> > > > > > > >>> Quem sabe se você postar no pastebin.com ou >>> pastebin.caesse >>> > >> > > > > pedaçõ de >>> > >> > > > > > > >>> codigo e passar para a lista ou em separado talvez >>> > >> possamos >>> > >> > > ajudar. >>> > >>> > >> > > > > > > >>> []'s >>> > >>> > >> > > > > > > >>> 2008/11/30 Felipe Ruiz <[EMAIL PROTECTED]> >>> > >>> > >> > > > > > > >>>> O que mudou: antes não tinha a linha new >>> > >> ObjectInputStream >>> > >> > > > > > > >>>> (socket.getInputStream()). Depois tinha a linha new >>> > >> > > > > ObjectInputStream >>> > >> > > > > > > >>>> (socket.getInputStream()); >>> > >>> > >> > > > > > > >>>> On 30 nov, 02:38, "Zaedy Sayão" < >>> [EMAIL PROTECTED]> >>> > >> wrote: >>> > >> > > > > > > >>>> > Cara, >>> > >>> > >> > > > > > > >>>> > explica o q esta tentando fazer, o q mudou pra >>> dar o >>> > >> erro pq >>> > >> > > > > assim, >>> > >> > > > > > > >>>> > jogando, >>> > >> > > > > > > >>>> > eu nao entendi necas :( >>> > >>> > >> > > > > > > >>>> > []'s >>> > >>> > >> > > > > > > >>>> > 2008/11/29 Pedro Philippe Rosanes < >>> > >> > > [EMAIL PROTECTED]> >>> > >>> > >> > > > > > > >>>> > > Só pra avisar que nessa Thread do servidor, já >>> > >> conseguimos >>> > >> > > > > > > >>>> > > instanciar um >>> > >> > > > > > > >>>> > > BufferedReader e um ObjectOutputStream. >>> > >> > > > > > > >>>> > > mas esse ObjectInputStream nao vai de jeito >>> > >>> > ... >>> > >>> > mais » >>> >>> >> >> >> -- >> Zaedy Dantas Sayão >> Graduando em Ciência da Computação DCC/UFRJ >> http://www.manufato.com.br/ >> MSN: [EMAIL PROTECTED] >> >> >> >> >> >> > > > > -- Flávio Coutinho da Costa --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Comp 2 - Geral" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/comp2-geral?hl=en -~----------~----~----~----~------~----~------~--~---
