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
[quote=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[/quote]
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.
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
eu continuo com o problema(na época não era realmente preciso)
o meu caso é o seguinte
o que quero é
o cliente conecta(façil ^^)
dai no while
envia uma String para o server
recebe um objeto do tipo Graphics2D(aqui esta o problema)
como consigo enviar um objeto do server para o socket
e como eu interpreto no socket
eu vi algo sobre o DataInputStream e DataOutputStream
mas como converto Graphics pra bytes e como interpreto pra Graphics o DataInput?
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();
Fora o google, nem se lembrou de procurar no javadoc?
[]s
Luca[/quote]
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
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(int i = 0; i< tamRajada; i++)
{
System.out.println("loop: " +i);
try
{
//Pega o tempo em que comunicação começa
tempoEnv = System.nanoTime();
System.out.println("pegou o tempo: ");
System.out.println("VAi enviar a msg "); //O programa congela depois dessa linha
objOut.writeObject(msgEnv);
System.out.println("Enviou a msg ");
msgRec = objIn.readObject(); //recebe a resposta do cliente
//Pega o tempo em que a comunicação termina
tempoRec = System.nanoTime();
//Tempo total da comunicação
tempoTot = tempoRec - tempoEnv;
getEscritor().println(tempoTot);
}
catch(ClassNotFoundException e)
{
}
}
[code]
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();
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 !!!