Escucha simultanea de dos canales en chat con modelo cliente/servidor.TCL

Iniciado por SDCC, 18 Septiembre 2019, 04:17 AM

0 Miembros y 1 Visitante están viendo este tema.

SDCC

Buenas a todos, tengo que dar solucion a un problema de un chat grupal con el modelo cliente/servidor dentro del lenguaje TCL y he creado de manera general una estructura en donde existe un servidor central al cual se conectan todos los clientes y los va agrupando en grupos de manera que cada usuario elige:

1. A que grupo pertenecer( En caso de no existir se crea)

2. Cual va ser su identificador dentro del grupo.
Mi modelo plantea que el servidor reciba estos datos al principio de la comunicacion y despues el haga la gestion de ellos de manera que pueda existir comunicacion entre usuarios de distintos grupos con ayuda del ID del grupo y el ID del usuario al que quiere comunicarse. Mis problemas comienzan con los siguientes puntos:

1. Como hago que el cliente este a la espera de recibir un mensaje del servidor y a la vez este a la espera de que no se llame la funcion que es generada al dar click en en un boton de "Enviar" para enviar un nuevo mensaje por parte del mismo cliente.

He visto el metodo SELECT de PYTHON que me permite estar a la espera de dos flujos de datos como STDIN y el socket pero en este caso concreto seria el SOCKET y una funcion que se llama cuando se da click en un boton para enviar el mensaje.He estado viendo si hay algo relacionado eso en TCL/TK pero no he encontrado demasiado al respecto.

2. En caso de que se envie un mensaje a un grupo o cliente no existente , que tipo de caracter podria enviar al cliente que origino el mensaje para darle a entender que el usuario o grupo al cual mando el mensaje no existe. Tal vez podria enviar una combinacion de caracteres pero de que manera me aseguro que esos caracteres no pueden ser parte de un mensaje que se esten pasando entre los usuarios.

Agradeceria si me ayudaran a dar solucion a estos dos problemas, o si me podrian presentar una alternativa que se suela usar para estos casos.

SDCC

Cita de: SDCC en 18 Septiembre 2019, 04:17 AM
1. Como hago que el cliente este a la espera de recibir un mensaje del servidor y a la vez este a la espera de que no se llame la funcion que es generada al dar click en en un boton de "Enviar" para enviar un nuevo mensaje por parte del mismo cliente.

He visto el metodo SELECT de PYTHON que me permite estar a la espera de dos flujos de datos como STDIN y el socket pero en este caso concreto seria el SOCKET y una funcion que se llama cuando se da click en un boton para enviar el mensaje.He estado viendo si hay algo relacionado eso en TCL/TK pero no he encontrado demasiado al respecto.

Primer punto resuelto. Descuido mio XDD, lo pude resolver asociando un evento con el socket que estaba vinculado a la comunicacion con el servidor con el comando 'fileevent'.

Aun me hace falta mejorar el segundo punto:
Citar
2. En caso de que se envie un mensaje a un grupo o cliente no existente , que tipo de caracter podria enviar al cliente que origino el mensaje para darle a entender que el usuario o grupo al cual mando el mensaje no existe. Tal vez podria enviar una combinacion de caracteres pero de que manera me aseguro que esos caracteres no pueden ser parte de un mensaje que se esten pasando entre los usuarios.

Agradeceria si me ayudaran a dar solucion a estos dos problemas, o si me podrian presentar una alternativa que se suela usar para estos casos.

Alguien me podria indicar que caracter en especifico se utiliza por lo general o que tipos de caracteres?