Galera, preciso fazer um jogo de Adedonha com sockets em Java. Pra quem não sabe ou não conhece, Adedonha é aquele jogo onde sorteamos uma letra e precisamos preencher alguns campos(Ex: Nome, Lugar, Objeto) com essas letras. Sou novo em sockets e tô precisando de ajuda. O jogo só deve começar quando eu tiver 2 clientes conectados ao servidor. Já descobri que para ter clientes simultâneos eu preciso usar Threads, então dei uma pesquisada e cheguei até aqui. Alguém pode dar uma ajuda ?
/* Parte do código do servidor */
public static void main(String[] args) throws IOException {
try {
new Servidor().executar();
}
catch(Throwable t) {
t.printStackTrace();
}
}
private boolean executando;
public void executar() throws IOException {
System.out.println("Aguardando conexao...");
ServerSocket s = new ServerSocket(60000);
executando = true;
while(executando) {
processar(s.accept());
}
s.close();
}
public void processar(final Socket conexao) {
Runnable execucao = new Runnable() {
public void run() {
try {
System.out.println("Cliente conectado");
int pontos;
char letra = gerarLetra();
String letra_enviada = letra + "\n";
ObjectInputStream input = new ObjectInputStream(conexao.getInputStream());
DataOutputStream output = new DataOutputStream(conexao.getOutputStream());
output.writeBytes(letra_enviada);
output.flush();
Object object = input.readObject();
String[] respostas;
respostas = (String[])object;
pontos = getPontos(respostas, letra);
System.out.println("Pontuação total: "+pontos);
}
catch(IOException e) {
e.printStackTrace();
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
};
new Thread(execucao).start();
}
public void parar() {
executando = false;
}
/* Aqui está o cliente */
public class Cliente {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
Socket client = new Socket("localhost", 60000);
BufferedReader input = new BufferedReader(new InputStreamReader(client.getInputStream()));
ObjectOutputStream output = new ObjectOutputStream(client.getOutputStream());
String letra = input.readLine();
System.out.println("Letra sorteada: "+letra);
String[] respostas = new String[3];
String nome, lugar, objeto;
System.out.print("Digite um nome com a letra "+letra+": ");
nome = sc.nextLine();
System.out.print("Digite um lugar com a letra "+letra+": ");
lugar = sc.nextLine();
System.out.print("Digite um objeto com a letra "+letra+": ");
objeto = sc.nextLine();
respostas[0] = nome;
respostas[1] = lugar;
respostas[2] = objeto;
output.writeObject(respostas);
output.flush();
sc.close();
client.close();
}
}