Socket

10 respostas
J

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.

10 Respostas

Mikhas

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.

J

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?

J

J

M

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.

J

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.

ViniGodoy

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.

T

ViniGodoy:
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).

J

ViniGodoy:
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.

J

thingol:
ViniGodoy:
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).

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!

Criado 10 de abril de 2009
Ultima resposta 13 de abr. de 2009
Respostas 10
Participantes 5