Galera sou novo na area do java to com dificuldade em colocar a parte em que Quando o usuário Digita o Apelido verificar se esse apelido existe. E o mesmo informar que o apelido ja esta em uso e pedir para o usuario digitar novamente. segue o codigo:
Cliente Oficial
[code]
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
public class ClienteOficial {
public static void main(String[] args) throws IOException {
Socket cliente_txt = new Socket("10.225.1.99", 12345);
PrintWriter pw_socket = new PrintWriter(cliente_txt.getOutputStream(), true);
Scanner teclado = new Scanner(System.in);
System.out.println("Bem vindo ao Chat de Redes");
System.out.print("Digite seu apelido: ");
pw_socket.println(teclado.nextLine());
new EsperaResposta(cliente_txt).start();
System.out.println("Digite o texto para enviar:");
String texto_para_enviar;
do {
texto_para_enviar = teclado.nextLine();
pw_socket.println(texto_para_enviar);
}while (!texto_para_enviar.equals("sair"));
teclado.close();
pw_socket.close();
cliente_txt.close();
}
}[/code]
[code]ClientT
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Hashtable;
import java.util.Scanner;
import java.util.Vector;
import javax.swing.text.StyledEditorKit.ForegroundAction;
public class ClienteT extends Thread {
Socket cliente_s;
//O vetor abaixo e statico pq ele que trabalha com a sessões do clientes.
static Vector<PrintWriter> pw_clientes = new Vector<PrintWriter>();
ClienteT(Socket _cliente_s) throws IOException {
cliente_s = _cliente_s;
PrintWriter pw = new PrintWriter(cliente_s.getOutputStream(), true);
pw_clientes.add(pw);
}
public void run() {
String cliente_ip = cliente_s.getInetAddress().getHostAddress();
String apelido = null;
try {
Scanner sc_socket = new Scanner(cliente_s.getInputStream());
apelido = sc_socket.nextLine();
System.out.println("Cliente " + apelido + " conectado. IP: "+cliente_ip);
while (sc_socket.hasNextLine()) {
String texto_recebido = sc_socket.nextLine();
System.out.println(texto_recebido);
for (PrintWriter p : pw_clientes) {
p.println(apelido + ":" + texto_recebido);
}
}
sc_socket.close();
cliente_s.close();
} catch (IOException e) {
System.out.println("Erro na conexão!");
}
System.out.println("Cliente " + apelido + " desconectou.");
}
}[/code]
[code]
ServidorOficial
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ServidorOficial {
public static void main(String[] args) throws IOException {
new Thread(new Runnable() {
public void run() {
try {
ServerSocket socket_s_txt = new ServerSocket(8080);
System.out.println("Esperando clientes (8080)...");
while (true) {
Socket cliente_s = socket_s_txt.accept();
new ClienteT(cliente_s).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}[/code]
Espera Cliente
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
class EsperaResposta extends Thread {
Socket s;
EsperaResposta(Socket _s) throws IOException {
s = _s;
}
public void run() {
Scanner sc;
try {
sc = new Scanner(s.getInputStream());
while (sc.hasNextLine()) {
String resposta = sc.nextLine();
System.out.println(resposta);
}
sc.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}