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] <mailto:[EMAIL PROTECTED]>> > > > O restante já está pronto. Só falta isso. > > On 6 dez, 14:07, "Zaedy Sayão" <[EMAIL PROTECTED] > <mailto:[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] > <mailto:[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] > <mailto:[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] > <mailto:[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] > <mailto:[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] > <mailto:[EMAIL PROTECTED]>> wrote: > > >> > > > Dá que tipo de merda? > > >> > > > As vezes podemos tentar ajudar a resolver. > > > > >> > > > []'s > > > > >> > > > 2008/12/5 Felipe Ruiz <[EMAIL PROTECTED] > <mailto:[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] <mailto:[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] > <mailto:[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 <http://MPS.BR> Authorized Implementation > Practitioner > > >> > > > > > > Sun Certified Java Associate > > >> > > > > > >http://pplupo.googlepages.com/ > > >> > > > > > > Cell. +55 (021) 81742487 > > > > >> > > > > > > 2008/11/30 Bruno Buss <[EMAIL PROTECTED] > <mailto:[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] > <mailto:[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] > <mailto:[EMAIL PROTECTED]>> > > > > >> > > > > > > >>> Acho que assim vai ser dificil solucionar > algum problema. > > >> > > > > > > >>> Quem sabe se você postar no pastebin.com > <http://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] > <mailto:[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] <mailto:[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] <mailto:[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] <mailto:[EMAIL PROTECTED]> > > > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
