Olá! estou com uma dúvida de como devo passar para uma thread os dados que recebo de um cliente via socket, tenho uma classe cliente que envia dados para uma classe distribuidor, essa classe recebe os dados e deveria startar uma thread toda vez que receber dados.
[RESOLVIDO] Socket + thread
13 Respostas
E qual a dúvida???
como passo para a thread os dados que recebi do cliente
essa é minha classe distribuidor
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class Distribuidor {
public static void main(String[] args) throws Exception {
// identificador
System.out.println("|----------------------------------------------|");
System.out.println("| Socket Distribuidor |");
System.out.println("|----------------------------------------------|");
// cria socket do distribuidor com a porta 1986
DatagramSocket distribuidorSocket = new DatagramSocket(1986);
byte[] dadosRecebidos = new byte[1024];
// byte[] dadosEnviados = new byte[1024];
boolean validador = true;
while (validador == true) {
// declara o pacote a ser criado
DatagramPacket pacoteRecebido = new DatagramPacket(
dadosRecebidos, dadosRecebidos.length);
// recebe o pacote do cliente
distribuidorSocket.receive(pacoteRecebido);
System.out.println("Pacote recebido");
Thread p = new processo();
p.start();
}// fim do while
}
}
cria uma classe que implementa a interface Runnable…
depois faça:
Runnable seuObj = new Runnable();
Threat t = new Thread(seuObj);
depois qndo receber os dados:
byte[] dados; // ...
seuObj.receberDados(dados);
abraz
acho que não forneci informações suficiente pra que a ajuda de vocês fosse mais util pra mim, estou fazendo um trabalho que consiste em uma ATM, onde tenho uma classe cliente que recebe os dados do usuário, que são repassados para a classe distribuidor via socket pela porta 1986, esse distribuidor faz uma verificação dos dados recebidos do cliente e repassa para a classe servidor, o meu objetivo é que eu possa executar mais de 1 cliente, ficando a classe distribuidor responsável apenas para receber as informações da porta 1986 e startar uma thread que vai fazer a comunicação com o servidor usando os dados que a classe distribuidor receber do cliente.
a thread é que vai receber os dados confirmados no servidor e devolver a informação ao cliente.
eu criei uma classe chamada processo que implementa runnable, só que não sei como passar as informações recebidas na classe distribuidor para as threads criadas a partir dessa classe
pq nao?
Cria um construtor na sua classe “processo” que receba as informações, exemplo:
public class Processo extends Thread {
private final Informacoes informacoes;
public Processo(Informacoes informacoes){
this.informacoes = informacoes;
}
public void run(){
//trabalha informacoes
}
}
Depois usa:
Thread p = new Processo(informacoes);
ta errado…
e qual o certo?
Leia o que eu te disse que voce irá entender…
Mais atenção tb é recomendado 
deu certo \o/ agora é tratar um erro de inetAddres… e tudo fica 100%… obrigado a todos pela ajuda!!!
Se possível, modifique o titulo do tópico pra [resolvido]…
abraços,
boa sorte na app…
t+