IIC2333 / foro-2019-1

Foro oficial del curso IIC2333 - Sistemas Operativos y Redes, semestre 2019-1.
2 stars 0 forks source link

Problema iniciando dos clientes #125

Closed fdominguezclaro closed 5 years ago

fdominguezclaro commented 5 years ago

Hola!

Estoy tratando de correr el código de la ayudantía para iniciar varios clientes pero no he podido.

Saben qué hay que hacer para que funcione bien?

Gracias!

nivek0o0 commented 5 years ago

Hola! El servidor que aparece en el código de la ayudantía no está diseñado para soportar la conexión de varios clientes. El parámetro del listen estaba puesto solamente para que supieran de su existencia.

Para soportar múltiples clientes, en un servidor real deberías hacer múltiples accept(...) (probablemente en un thread para no quedar bloqueado) y guardar los ID's de los sockets de los clientes en un arreglo, para poder comunicarte con ellos después.

Para este proyecto no tienen que complicarse, basta con que el servidor haga 2 accept() consecutivos para obtener dos identificadores, por ejemplo client1Socket y client2Socket, de la forma en que se explica en #123.

fdominguezclaro commented 5 years ago

Ok buenísimo!! Gracias por la respuesta!

malopez16 commented 5 years ago

@nivek0o0 me quedó una duda: Acá mencionas que

deberías hacer múltiples accept(...) (probablemente en un thread para no quedar bloqueado)

pero en #123 mencionas

Esto quiere decir que su servidor debería crear un socket, bloquearse hasta que el primer cliente se conecte, aceptar al primer cliente, bloquearse hasta que el segundo cliente se conecte, aceptar al segundo cliente y recién aquí empezar con la lógica del juego.

Perdón lo majadero pero eso me está confundiendo un poco. ¿No son contradictorias ambas sugerencias?

nivek0o0 commented 5 years ago

@malopez16 ahí edité mi respuesta anterior. Con usar threads me refería en un servidor web de verdad

malopez16 commented 5 years ago

gracias! ahora sí me quedó clarísimo! :)