Skip to content

Commit

Permalink
[ServidorMensajeria] Añadido el envio de nicks a los clientes
Browse files Browse the repository at this point in the history
  • Loading branch information
Santiago Faci committed Feb 15, 2017
1 parent 2462faa commit 33711be
Show file tree
Hide file tree
Showing 7 changed files with 129 additions and 73 deletions.
158 changes: 90 additions & 68 deletions ServidorMensajeria/.idea/workspace.xml

Large diffs are not rendered by default.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Expand Up @@ -16,6 +16,7 @@
*/
public class Cliente {

private String nick;
private Socket socket;
PrintWriter salida;
BufferedReader entrada;
Expand All @@ -40,4 +41,12 @@ private void iniciar() throws IOException {
public boolean estaConectado() {
return socket.isConnected();
}

public String getNick() {
return nick;
}

public void setNick(String nick) {
this.nick = nick;
}
}
Expand Up @@ -18,13 +18,16 @@ public ConexionCliente(Servidor servidor, Cliente cliente) {
@Override
public void run() {

servidor.enviar("Hola, bienvenido al mejor chat del mundo", cliente);

try {
cliente.setNick(cliente.entrada.readLine());
servidor.enviarNicksATodos();
servidor.enviar("Hola, bienvenido al mejor chat del mundo", cliente);

String mensaje = null;
while (cliente.estaConectado()) {
mensaje = servidor.recibir(cliente);
servidor.enviarATodos(mensaje);
mensaje = cliente.getNick() + ">" + mensaje;
servidor.enviarATodos(mensaje, cliente.getNick());
}
} catch(IOException ioe) {
ioe.printStackTrace();
Expand Down
26 changes: 24 additions & 2 deletions ServidorMensajeria/src/com/sfaci/servidormensajeria/Servidor.java
Expand Up @@ -92,10 +92,32 @@ public String recibir(Cliente cliente) throws IOException {
* Envia un mensaje a todos los clientes conectados
* @param mensaje El mensaje
*/
public void enviarATodos(String mensaje) {
public void enviarATodos(String mensaje, String nickRemitente) {

for (Cliente cliente : clientes) {
enviar(mensaje, cliente);
if (!cliente.getNick().equals(nickRemitente))
enviar(mensaje, cliente);
}
}

public void enviarNicksATodos() {

/*
Forma una cadena de texto con todos los nicks de los
clientes conectados separados por el carácter #
*/
StringBuilder sb = new StringBuilder();
sb.append("/nicks");
for (Cliente cliente : clientes) {
sb.append("#");
sb.append(cliente.getNick());
}

/*
Envia la lista de nicks a todos los clientes conectados
*/
for (Cliente cliente : clientes) {
enviar(sb.toString(), cliente);
}
}
}

0 comments on commit 33711be

Please sign in to comment.