elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Alguien me puede exar una mano para hacer un servidor 'echo' bajo tcp que soport
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien me puede exar una mano para hacer un servidor 'echo' bajo tcp que soport  (Leído 2,090 veces)
pelos22

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Alguien me puede exar una mano para hacer un servidor 'echo' bajo tcp que soport
« en: 21 Junio 2011, 20:12 pm »

servidor 'echo' bajo TCp que soporte varios clientes y permita ''chatear''?
Escribe un servidor que pueda atender hasta cuatro clientes simultáneamente y que, cuando reciba
texto de cualquiera de los clientes, envíe ese mismo texto a todos los clientes conectados.
Esta forma de funcionar permite un rudimentario “chat”, ya que cuando cualquiera de los usuarios
escribe algo, todos los demás lo leen, si bien no saben de quién proviene el mensaje (el usuario debería
poner su nombre como encabezado del mensaje).

Por tanto el servidor debe implementarse mediante select(). El algoritmo sería el siguiente:
El programa tiene un array de 4 enteros, para almacenar los descriptores de los sockets de datos
de los clientes a los que puede atender. Inicialmente estos enteros valen 0 para indicar que no
hay cliente conectado en ninguno de ellos.
Adicionalmente tendrá un socket de escucha, incializado y preparado para aceptar conexiones
en el número de puerto que se haya pasado al programa principal desde línea de comandos.
En un bucle infinito:
 Se preparará un conjunto fd_set con los descriptores de los sockets a observar. Éstos serán
el socket de escucha (que irá siempre), y los sockets de datos distintos de cero.
 select() deja el programa bloqueado hasta que ocurra algo en alguno de esos sockets.
 Si ha sido en el de escucha:
 Aceptar el cliente guardando el nuevo socket de datos en una variable auxiliar.
 Si hay sitio para un nuevo cliente (algún socket de datos es cero), copiar la variable
auxiliar al elemento libre del array de sockets de datos.
 Si no hay sitio para un nuevo cliente (todos los sockets de datos son distintos de
cero), cerrar de nuevo el socket auxiliar que acababa de crearse en accept(). El cliente
correspondiente verá que es aceptado momentáneamente, pero inmediatamente después
se cierra su conexión.
 Volver al bucle infinito.
 Si ha sido en alguno de los sockets de datos:
 Leer los datos de ese socket.
 Si la lectura retorna 0 bytes, es que el cliente correspondiente ha cerrado. En ese caso
cerrar ese socket de datos, poner a 0 su descriptor (para indicar que ya no tiene cliente
conectado), y volver al bucle infinito.
 Si la lectura retorna distinto de cero, escribir los datos recibidos en todos los demás
sockets de datos que tengan un cliente conectado.
 Volver al bucle infinito.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien me puede ayudar ha hacer un servidor crakeado de cs 1.6
Juegos y Consolas
alex5o2 0 1,240 Último mensaje 20 Enero 2006, 15:05 pm
por alex5o2
Película que se oye muy bajo, ¿se puede hacer algo? « 1 2 »
Multimedia
helejagy 12 11,998 Último mensaje 9 Marzo 2006, 12:40 pm
por Songoku
Digitalizar un dibujo echo a mano? alguien me ayuda un poco?
Diseño Gráfico
XXXXXX 7 10,784 Último mensaje 6 Mayo 2010, 20:37 pm
por Azielito
alguien me puede dar una mano
Ingeniería Inversa
elzar 2 2,679 Último mensaje 6 Julio 2010, 16:51 pm
por Amerikano|Cls
Servidor y Cliente UDP - echo test
Java
BatchianoISpyxolo 1 3,279 Último mensaje 8 Febrero 2013, 14:03 pm
por BatchianoISpyxolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines