boa tarde pessoal
estou com uma outra duvida aqui em relacao ao thread usando socket
eu fiz um prog que qndo cliente manda msg o servidor responde com quantos characters o cliente enviou
funcionou normal
mais agora preciso colocar varios clientes utilizando o thread e do jeito que eu estou fazendo nao esta funcionando de jeito nenhum
se alguem puder por favor me da 1 luz =)
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
public class Cliente extends Thread {
String sentence;
String modifiedSentence;
Socket Client = null;
public static void main (String[] args)
{
Cliente teste1 = new Cliente();
Thread Conserv = new Thread(teste1);
Thread Conserv2 = new Thread(teste1);
Thread Conserv3 = new Thread(teste1);
Conserv.start();
Conserv2.start();
Conserv3.start();
}
public void run()
{
MandarConectar();
}
public void MandarConectar(){
try{
if(Client == null){
// Cria um Socket cliente passando como parâmetro o ip e a porta do servidor
Client = new Socket("localhost", 40000);}
// Cria um buffer que armazenará as informações de entrada do teclado
BufferedReader inFromUSer = new BufferedReader(new InputStreamReader(System.in));
// Cria um stream de saída
DataOutputStream outToServer = new DataOutputStream(Client.getOutputStream());
// Cria um buffer que armazenará as informações retornadas pelo servidor
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(Client.getInputStream()));
// Atribui as informações armazenadas no buffer do teclado à variável "sentence"
sentence = inFromUSer.readLine();
// Disponibiliza as informações contidas em "sentence" para a stream de saída do cliente
outToServer.writeBytes(sentence + "\n");
// Atribui as informações modificadas pelo servidor na variável "modifiedSentence"
modifiedSentence = inFromServer.readLine();
// Imprime no console do cliente a informação retornada pelo servidor
System.out.println("do servidor: " + modifiedSentence);
// Fecha o Socket
Client.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {
public static void main(String[] args) {
String clientSentence;
String capitalized;
ServerSocket socket = null;
Socket connectionSocket = null;
try {
// Cria um SocketServer (Socket característico de um servidor)
socket = new ServerSocket(40000);
while(true) {
/* Cria um objeto Socket, mas passando informações características de um servidor,
*no qual somente abre uma porta e aguarda a conexão de um cliente
*/
connectionSocket = socket.accept();
// Cria uma buffer que irá armazenar as informações enviadas pelo cliente
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
// Cria uma stream de sáida para retorno das informações ao cliente
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
// Faz a leitura das informações enviadas pelo cliente as amazenam na variável "clientSentence"
clientSentence = inFromClient.readLine();
/* Faz uma modificação na String enviada pelo cliente, simulando um processamento em "back-end"
* antes de retorná-la ao cliente
*/
capitalized = clientSentence.toLowerCase();
// Imprime a a String modificada no console do servidor
System.out.println("Voce digitou: "+capitalized.length()+" letras");
// Retorna as informações modificadas, ao cliente
outToClient.write(capitalized.length());
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
connectionSocket.close();
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
Obriigado atE+