Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

22 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SCP – Simple Chat Protocol

Especificación del Protocolo

1. Introducción

El Simple Chat Protocol (SCP) define cómo un cliente y un servidor de chat intercambian mensajes.
Es un protocolo basado en texto, lineal, y separado por saltos de línea (\n).

Cada mensaje siempre empieza por la línea:

SCP

El protocolo es síncrono por solicitud-respuesta para acciones del cliente, pero asíncrono para notificaciones y mensajes entrantes.


2. Formato General de Mensajes

Todos los mensajes siguen esta estructura:

SCP
<COMANDO>
<CONTENIDO_OPCIONAL>

El servidor puede responder también con:

SCP
OK
<INFO_OPCIONAL>

o

SCP
ERR
<MOTIVO>

3. Fases del Protocolo

3.1. Conexión TCP/SSL

  1. El cliente abre un socket TCP.
  2. Se establece TLS sin validación estricta del certificado.
  3. Tras conectarse, queda listo para recibir un mensaje con el nombre de usuario.
  4. El servidor verifica el nombre de usuario, y si es valido, el servidor queda listo para recibir mensajes del cliente.

4. Comandos del Cliente → Servidor

4.1. HELLO

(Obligatorio) Inicia sesión con un nombre de usuario.

SCP
HELLO
<username>

Respuesta esperada:

  • En caso de éxito:
    SCP
    OK
    
  • En caso de error:
    SCP
    ERR
    <mensaje_de_error>
    

4.2. LIST

Solicita la lista de usuarios conectados.

SCP
LIST

Respuesta:

SCP
OK
user1,user2,user3

4.3. SEND

Envía un mensaje a todos los usuarios.

SCP
SEND
<mensaje>

Respuesta (siempre OK, a menos que falle el formato):

SCP
OK

4.4. SENDTO

Envía un mensaje privado (whisper) a un usuario:

SCP
SENDTO
<username>:<mensaje>

Si el usuario no existe:

SCP
ERR
User not found

Si es correcto:

SCP
OK

4.5. END

Finaliza la sesión del cliente.

SCP
END

El servidor responderá:

SCP
END

Y cerrará la conexión.


5. Mensajes del Servidor → Cliente

El servidor puede enviar mensajes en cualquier momento.

5.1. Notificaciones (NOTIFY)

Usadas para avisos generales (ej: usuarios conectados/desconectados).

SCP
NOTIFY
<texto>

5.2. Mensajes públicos (BROADCAST)

Cuando otro usuario envía un mensaje público:

SCP
BROADCAST
<sender>:<mensaje>

5.3. Mensajes privados (WHISPER)

Envío de mensajes dirigidos solo al cliente:

SCP
WHISPER
<sender>:<mensaje>

5.4. Cierre remoto (END)

Cuando el servidor decide terminar la conexión:

SCP
END

El cliente debe cerrarse inmediatamente.


6. Estados del Cliente

Estado Descripción
Desconectado No hay socket establecido.
Conectado TCP/TLS activo.
Logueado Se ha enviado HELLO y recibido OK.

El cliente solo puede enviar SEND, SENDTO, LIST si está en estado Logueado.


7. Errores Comunes

Error Causa
ERR Invalid username Username vacío o inválido.
ERR User not found Whisper a un usuario inexistente.
ERR genérico Error interno en el servidor o formato incorrecto.

8. Ejemplo de Sesión Completa

Cliente → Servidor

SCP
HELLO
Alice

Servidor → Cliente

SCP
OK

Cliente → Servidor

SCP
SEND
Hola a todos!

Servidor → Todos

SCP
BROADCAST
Alice:Hola a todos!

Cliente → Servidor

SCP
END

Servidor → Cliente

SCP
END

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages