PDA

Ver la Versión Completa : Enviar la información únicamente al cliente adecuado


noob
14-11-2008, 17:21:27
Hola, tengo un programa cliente-servidor hecho con sockets y tengo varios clientes conectados a un servidor.

Los clientes envían peticiones al servidor y quiero que la respuesta del servidor sea sólo para el que le hizo la petición.

Por ejemplo tengo tres clientes y uno de ellos envia "Hola" al servidor.

El servidor cuando recibe "Hola" responde "Qué tal" pero yo quiero que sólo envíe "Qué tal" al cliente que le ha dicho "Hola" y no a todos.

No se si me explico. Gracias.

donald shimoda
14-11-2008, 17:25:36
Hola, tengo un cliente servidor hecho con sockets y tengo varios clientes conectados a un servidor.

Yo envío peticiones desde los clientes al servidor y quiero que la respuesta del servidor sea sólo para el que le hizo la petición.

Por ejemplo tengo tres clientes y uno de ellos envia "Hola" al servidor.

El servidor cuando recibe "Hola" responde "Qué tal" pero yo quiero que sólo envíe "Qué tal" al cliente que le ha dicho "Hola" y no a todos.

No se si me explico. Gracias.

Supongo que si el mensaje esta ingresando por el mismo socket (usas solo uno de escucha en el servidor, digamos en el puerto x por poner uno) podes agregar en el mismo mensaje un encabezado indicando quien fue el que lo envió.

Tambien puedes mantener una tabla en memoria con las IP de los clientes al momento de conectarse y dependiendo del componentes que estes usando, obtener la ip y contestartle solo a esa IP, aunque en internet no funcionaría si los clientes estan usando NAT.

Saludos

fer21unmsm
14-11-2008, 19:59:31
puedes crearte un paquete como menciona Donald con la estructura siguiente más o menos

ipcliente, código de mensaje, mensaje, y lo envías mediante tu aplicacion cliente - servidor, cuando llegue al servidor sólo lees la estructura y sacas la ipcliente para el reenvío de la respuesta, puedes manejar crc para verificar que la data llega correctamente u otro mecanismo.

o tambien puedes crear una conexión ida y vuelta(bidireccional), y luego se cierra; y cada vez que un cliente hace una peticion o si son varios, puedes crear varias conexiones bidireccionales, dependiendo de como vaya a funcionar tu aplicativo,

Saludos