Eu posso mandar Objects por uma socket ou só Strings?
e outra como eu sei pra qm to mandando eu usei um tuto da sun pra recebe mais de um cliente mas quando digito no server não sei quem vai recebe pq uma hora é um depois outra dai nao amnda pra ninguem dia na proxima entrada manda um pra cada
Por favor alguém sabe me esclarecer essas duvidas??
KWill
Mark_Ameba:
Eu posso mandar Objects por uma socket ou só Strings?
e outra como eu sei pra qm to mandando eu usei um tuto da sun pra recebe mais de um cliente mas quando digito no server não sei quem vai recebe pq uma hora é um depois outra dai nao amnda pra ninguem dia na proxima entrada manda um pra cada
Alguém??
Obrigado
Você consegue mandar bytes pelo Socket. Se esses bytes representam um Objeto java ou Strings, cabe ao lado que recebe os bytes interpretar direito esses bytes. Então, de certa forma, você consegue enviar Objetos java e/ou Strings por Socket.
Cada objeto Socket representa uma conexão TCP, estabelecida ou não, exceto no caso dos DatagramSockets, que não precisam de conexão por usarem UDP. Então, cada objeto Socket representaria o canal de comunicação com outro dispositivo remoto. Se não for isso que tu pediu para entender, então reformula aí a pergunta porque me parece muito confuso.
Inté.
Marky.Vasconcelos
Desculpa pela confusão mais é assim:
Tenho uma classe que implemente Runnable que trata minhas conexões com o ServerSocket
mas dai eu não sei pra quem eu vou mandar uma mensagem as vezes as mensagens são enviadas para um depois para outro e queria sabe se tenho como manda pra um endereço especifico conectado no servidor e como sabe quem é que ta conectado
espero ter esclarecido minha duvida
Marky.Vasconcelos
to dando um up para não abir um novo tópico
eu continuo com o problema(na época não era realmente preciso)
eu vi algo sobre o DataInputStream e DataOutputStream
mas como converto Graphics pra bytes e como interpreto pra Graphics o DataInput?
leonardom
Você pode usar as classes:
ObjectInputStream e ObjectOutputStream
Exemplo simples de uso:
Socket socket = new Socket(host, port);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
//sending an object
socket.writeObject(new Customer());
//receiving an object
Customer c = (Customer)socket.readObject();
//closing connection
in.close();
out.close();
socket.close();
Marky.Vasconcelos
Cara muito obrigado
depois de dois meses me vem a solução
Fora o google, nem se lembrou de procurar no javadoc?
[]s
Luca
Marky.Vasconcelos
Luca:
Olá
Mark_Ameba wrote:
depois de dois meses me vem a solução
Fora o google, nem se lembrou de procurar no javadoc?
[]s
Luca
Eu postei aquela vez pq sabia que ia usar pra frente, procurei no google e nada, não era necessario decedi esperar deixar de lado
dai vem um mes de ferias e não procurei de saber mais nada
mais agora eu preciso por isso a duvida
alias no Javadoc eu tinha visto sobre o DataImputStream e DataOutputStream mas não tinha intendido como com o Imput retornaria um objeto denovomas foi erro meu não ter visto ObjectImput e Output
J
j_chist
EStou tendo que enviar instâncias de Object por socket e já estava fazendo parecido com o código postado aqui. O servidor e o cliente se contactam, entram no loop de troca de mensagens, mas o Object não é enviado, o programa simplesmente para. Alguma sugestão?
for(inti=0;i<tamRajada;i++){System.out.println("loop:" +i);try{//Pega o tempo em que comunicação começatempoEnv = System.nanoTime(); System.out.println("pegouotempo:");System.out.println("VAienviaramsg"); //O programa congela depois dessa linhaobjOut.writeObject(msgEnv);System.out.println("Enviouamsg");msgRec=objIn.readObject();//recebearespostadocliente
//Pega o tempo em que a comunicação terminatempoRec=System.nanoTime();//Tempo total da comunicaçãotempoTot=tempoRec-tempoEnv;getEscritor().println(tempoTot);}catch(ClassNotFoundExceptione){}}
lcharallo
leonardom:
Você pode usar as classes:
ObjectInputStream e ObjectOutputStream
Exemplo simples de uso:
Socket socket = new Socket(host, port);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
//sending an object
socket.writeObject(new Customer());
//receiving an object
Customer c = (Customer)socket.readObject();
//closing connection
in.close();
out.close();
socket.close();
Muito obrigado pela ajuda leonardom eu estava com a mesma que o Mark_Ameba , e quando eu fui usar o código que você passo eu notei que o método writeObject() que é usado para enviar o objeto não esta relacionado com o socket mais sim com o fluxo de saída de dados o ObjectOutputStream , o mesmo se aplica ao método readObject(). Então ficaria assim o seu exemplo.
Socket socket = new Socket(host, port);
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
//sending an object
out.writeObject(new Customer());
//receiving an object
Customer c = (Customer)in.readObject();
//closing connection
in.close();
out.close();
socket.close();
ps.: alguem me corrija se eu estiver errado por favor !!!