Chat Bate Papo usando Socket

0 respostas
G

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
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();

	}

}

-----------------------------------------

[b]ClientT[/b]

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.");

		
		
	}
}
----------------------------------------------
[b]
ServidorOficial
[/b]

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();

		

	}
}

---------------------------------

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();
			}

		}

	}
Criado 6 de março de 2015
Respostas 0
Participantes 1