Olá. O meu software cliente possui o método readObject que recebe um objeto do servidor. A pergunta é a seguinte: Teria como saber qual o objeto o servidor está escrevendo antes do readObject ser executado?
Abraço.
Socket
10 Respostas
Creio que não.
Acho mais facil você verificar isso logo depois de ler o objeto (readObject), sem executar nenhuma operação com o mesmo.
Olá. Obrigado pela resposta.
O problema é que no cliente há 2 threads lendo (readObject) o servidor. Eu queria que cada thread lesse o seu respectivo objeto.
É possível?
…
…
Você pode mandar uma String identificando o objeto antes de mandar o objeto propriamente dito. Se soubéssemos a situação específica ficaria mais fácil ajudar. Poste o código aqui.
Ainda não terminei, mas estou tentando usar apenas um readObject, daí a thread que foi gerada por uma outra thread lê todos os objetos e os distribui através de pipes.
Não fique “upando” tópicos. Se ninguém respondeu, procure pelo menos colocar mais informações a respeito do problema.
Você está usando ObjectOutputStream e ObjectInputStream? Se está fazendo isso, pare imediatamente. Esses dois caras não funcionam direito, pelo menos, não com conexões socket.
Não fique “upando” tópicos. Se ninguém respondeu, procure pelo menos colocar mais informações a respeito do problema.Você está usando ObjectOutputStream e ObjectInputStream? Se está fazendo isso, pare imediatamente. Esses dois caras não funcionam direito, pelo menos, não com conexões socket.
Sempre comento o caso em que um colega meu foi despedido por não ter conseguido resolver o problema de ObjectInput/OutputStream e sockets (no caso dele era memory leak).
Ainda mais você quer ter 2 threads lendo do mesmo socket? Sinto muito; pode já preparar seu currículo.
De qualquer maneira, é interessante você entender que um ObjectInputStream fornece um Object; você pode usar um instanceof para saber qual é o tipo do objeto, por exemplo, e você pode ter alguma coisa (uma terceira thread, por exemplo) que fique lendo esse tal ObjectInputStream, e essa tal coisa separa os objetos de acordo com a thread que deseja lê-los. Você precisaria ter um objeto mais complicado, que encapsulasse esses objetos que você quer transmitir, contendo um indicador de destino dentro do seu programa (se você quer mandar para a primeira ou para a segunda thread).
Não fique “upando” tópicos. Se ninguém respondeu, procure pelo menos colocar mais informações a respeito do problema.Você está usando ObjectOutputStream e ObjectInputStream? Se está fazendo isso, pare imediatamente. Esses dois caras não funcionam direito, pelo menos, não com conexões socket.
Eu não estou upando nada. É só vc olhar os horários. Eu postei algo que achei que devia apagar pois achava que não tinha muita relação, porém não conseguí apagar, então só editei.
Não fique “upando” tópicos. Se ninguém respondeu, procure pelo menos colocar mais informações a respeito do problema.Você está usando ObjectOutputStream e ObjectInputStream? Se está fazendo isso, pare imediatamente. Esses dois caras não funcionam direito, pelo menos, não com conexões socket.
Sempre comento o caso em que um colega meu foi despedido por não ter conseguido resolver o problema de ObjectInput/OutputStream e sockets (no caso dele era memory leak).
Ainda mais você quer ter 2 threads lendo do mesmo socket? Sinto muito; pode já preparar seu currículo.De qualquer maneira, é interessante você entender que um ObjectInputStream fornece um Object; você pode usar
um instanceof parasaber qual é o tipo do objeto, por exemplo, e você pode ter alguma coisa (uma terceira thread, por exemplo) que fique lendo esse tal ObjectInputStream, e essa tal coisa separa os objetos de acordo com a thread que deseja lê-los. Você precisaria ter um objeto mais complicado, que encapsulasse esses objetos que você quer transmitir, contendo um indicador de destino dentro do seu programa (se você quer mandar para a primeira ou para a segunda thread).
Agora estou fazendo mais ou menos isso mesmo. Um só readObject em uma thread, daí dependendo do objeto lido ou eu mando dados deste objeto para a thread que a startou via pipes ou o uso na própria thread. Vlw!