publicclassServerThreadextendsThread{privatefinalstaticintPORT=8000;publicServerMainThread(Lectorowner){this.start();}publicvoidrun(){try{ServerSockets=newServerSocket(PORT);//Cria ServerSockettry{while(true){Socketsocket=s.accept();//Espera elguém se conectar a ele//Quando alguém se conecta ele//Cria uma variável socket que //Está com uma conexão ativa//E é por ela que vc poderá fazer//Toda a comunicação necessária.}}finally{s.close();}}catch(IOExceptione){e.printStackTrace();}}}
espero ter ajudado.
Abraço,
Maicon
I
italobrazPJ
maicon_b Vlw brigado…
entaum naum preciso usar Threads???
M
maicon_bPJ
Olhe bem o código que eu lhe mandei:
“public class ServerThread extends Thread”
Ela é uma classe que extende Thread, esperando uma conexão…
Não seria necessário thread alguma se vc só usasse a classe para ver se alguém se conectasse a vc, mas já que vc vai querer enviar e/ou receber dados então é obrigatório o uso de thread, ao contrário a sua aplicação vai praticamente travar, por motivo do while(true){}
Uma idéia que eu não passeo pra vc é a seguinte, montar um método que recebe como parâmentro o socket que vc criou, instanciando-a para cada socket separado.
Espero ter sido claro,
Abraço,
Maicon
I
italobrazPJ
Minha idéia é a seguinte… me corrija se estiver errado…por favor…
1 - vou ter um arquivo chamado BINDER.JAVA
nele vou criar a inteface com um botão pra iniciar …
2 - ao clickar no botão… eu vou chama uma outra CLASSE (q usára thread) e com o While para esperar a conexão…
3 - e a cada conexão Aceita… chamo uma outra classe (tbm usará THREAD???) passando o socket como parametro… para trocar informções com o cliente
agora vem as dúvidas:
eu realmente preciso dá 3º classe??? ou eu posso trocar informações na 2º classe mesmo???
bom ve ai o q mais vc acha??? se to certo?? errado???
brigadão maicon_b
ta me ajudando Pakas!!!
M
maicon_bPJ
Eu fiz um sistema da seguinte forma:
Eu tenho um servidor de arquivos, assim que alguém se conecta a ele, o servidor gera um socket com o tal socket.accept();
Essa classe que executa o tal do socket.accept(); está numa thread para não travar o programa, então ele fica presso no método accept() até que algum cliente se conecte a ele, assim que alguem cliente se conectou, o método accept retorna um socket para outra variável, que por sua vez eu fogo em outra classe que não necessariamente precise ser uma tread, mas seria o ideal.
//Somente um exemplo para entendimento://Classe Principal.javapublicclassPrincipal{ThreadespClients;publicvoidmain(Stringargs[]){espClients=newEsperaClients();}}//Classe EsperaClients extendida de threadpublicclassEsperaClientsextendsThread{publicEsperaClients(){start();}publicvoidrun(){try{ServerSockets=newServerSocket(8000);try{while(true){Socketsocket=s.accept();ServerThread(socket);}}finally{s.close();}}catch(IOExceptione){e.printStackTrace();}}}//Classe que fará todo o serviço necessário com o socket estabelecidopublicclassServerThreadextendsThread{privateSocketsocket;publicServerThread(Socketsocket){this.socket=socket;start();}publicvoidrun(){//Adicione aki o que vc deseja fazer com o socket.//Ex: enviar algum Stream...socket.getOutputStream().......;}}
Obs: Este código fiz agora no braço, sem testes, então não sei se irá funcionar, talvés será necessário ulgunas pequenas correções.