| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Triquiñuelas
Registrado: 12 Dic 2010 Mensajes: 1
| Publicado: 12/12/2010 8:24 am | | | Título: ¿Cómo diferenciar si un cliente funciona con UDP o TCP? |
| Buenas a todos. Estoy haciendo un par de programas (servidor y cliente) en Ubuntu, que se hablen entre sí y ambos puedan tener abiertas varias conexiones. El caso es que quiero que el servidor pueda tratar tanto conexiones que le lleguen usando UDP como TCP por el mismo puerto. Pero no sé cómo hacer que el servidor, cuando le llega una nueva conexión, sepa si va por UDP o TCP y que dependiendo de si es un protocolo u otro, los trate de diferente forma.
Pensaba que con crear el socket y decirle qué protocolo debe utilizar, valdría para diferenciar las conexiones, y que en caso de no corresponderse, no se crearía el socket correctamente, pero veo que no. ¿De qué manera diferencio si lo que me llega es UDP o TCP antes de tratar la información que me llegue?
Muchas gracias de antemano. |
| | Volver arriba | |  | Sorancio

Registrado: 29 May 2009 Mensajes: 1157 Ubicación: España
| Publicado: 12/12/2010 10:19 am | | | Título: |
| | Una manera "fácil" sería recoger de forma cruda el paquete recibido y analizarlo. Hay que tener en cuenta también que UDP es un protocolo "connection-less". Esto quiere decir que no hay una conexión constante, sólo cuándo se envían o recibes paquetes. |
| | Volver arriba | |  | cheroky
Registrado: 22 Sep 2005 Mensajes: 2558 Ubicación: Valladolid (España)
| Publicado: 12/12/2010 7:42 pm | | | Título: |
| Hola.
No entiendo el problema, necesitas dos sockets (LISTENING) para cada protocolo y un mismo puerto, así que estan bien diferenciados por los descriptores que (acept) valida para conexiones TCP. Más que un problema lógico parece ser de diseño, máxime teniendo en cuenta que con una conexión cliente/servidor con datagramas de usuario necesitas validar cada ventana de datos y el resultado final es cuasi-simular TCP con UDP.
No obstante sin conocer bien lo que pretendes puedes implementar un protocolo de alto nivel con unos pocos bytes por paquete, ID de cliente, etc.
·?0ƒ· _________________ La cuestión no es si hay vida inteligente en otros planetas lejanos. La cuestión es si hay vida inteligente aquí. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |