2012-03-19 13 views
5

Estoy implementando una aplicación para iPhone/iPad que permite a los usuarios enviarse unos a otros mensajes usando el protocolo bonjour. Básicamente, un servidor publica su servicio sobre bonjour y los clientes conectados a la misma wifi pueden descubrir su servicio y conectarse a él para comenzar a enviar mensajes. El problema que he encontrado es que algunos enrutadores parecen tener problemas con Bonjour. Cuando ejecuto mi aplicación en casa o en otros lugares, funciona perfectamente. La publicación y el descubrimiento de los servicios bonjour funciona a la perfección. Sin embargo, cuando probé mi aplicación en uno de los apartamentos de mi amigo, algunos (no todos) los clientes no pudieron descubrir el servicio bonjour publicado. También noté que otras aplicaciones que usan Bonjour (como la aplicación remota de Apple) también tenían problemas en dicha red. Después de hacer algunas excavaciones, descubrí que otras personas han tenido problemas similares con Bonjour y algunos enrutadores. Por lo tanto, tengo 2 preguntas:Alternativa al uso del protocolo Bonjour para iPhone peer to peer

1) ¿Alguien sabe si este problema con Bonjour que algunos enrutadores parecen tener es un problema generalizado? En otras palabras, si mi aplicación depende de Bonjour para funcionar, ¿debo preocuparme de que no funcione en el 50% de las redes WLAN o la mayoría de los enrutadores no tengan problemas con bonjour? Obviamente, no puedo esperar que nadie sepa cómo todos los enrutadores que hay por ahí se ocupan de los paquetes bonjour, pero tal vez haya algunos gurús de redes que puedan orientarme en la dirección correcta: --p.

2) En segundo lugar, si Bonjour es demasiado arriesgado con un protocolo para construir mi aplicación, ¿cuáles son algunas alternativas con características similares? Las características que preferiría (preferiblemente) serían la publicación y el descubrimiento de servicios sin que los usuarios tengan que ingresar manualmente las direcciones IP de otros teléfonos.

Ok gracias por su ayuda! Entiendo que esta es una pregunta bastante amplia, ¡pero cualquier ayuda es apreciada! :)

+0

¿Puede verificar que dicho enrutador tenga una configuración para habilitar la comunicación cliente a cliente? Algunos enrutadores WLAN "aíslan" clientes entre sí. En cuanto a qué tan extendido es esto, hay bastantes enrutadores con esta funcionalidad. Otros protocolos de descubrimiento de servicio no funcionarán directamente entre dos clientes si el aislamiento del cliente está en vigor. – ldx

+0

Hola. ¡Gracias por el consejo! Tendré que verificarlo. El problema surgió con el enrutador de un amigo, así que tendré que pasar por su casa para verificarlo. –

Respuesta

3

Esto es potencialmente una tuerca difícil de romper. El problema que causa que los dispositivos no se encuentren en ciertas redes está relacionado con el transporte subyacente (es decir, multidifusión UDP) y no Bonjour (o mDNS o lo que sea que quieras llamar).

En términos de alto nivel, no rigurosos, los datos de multidifusión ponen más carga en los enrutadores. A las grandes redes corporativas y universitarias a veces les gusta dejar caer mensajes Bonjour (es decir, paquetes UDP enviados al grupo de multidifusión 224.0.0.251 en el puerto 5353) porque significa que la red no está inundada con miles de clientes anunciando sus bibliotecas de iTunes o lo que sea, y esto puede mejorar el rendimiento general. En el otro extremo del espectro, algunos enrutadores domésticos lanzan paquetes de multidifusión fuera de la caja por razones que solo conoce el fabricante. No hay mucho que puedas hacer en cualquier situación.

Intenta ejecutar un tcpdump en la red para ver si los paquetes realmente están llegando. No he encontrado un enrutador doméstico que no los envíe por un tiempo. Si no lo son, tendrás que buscar alguna instalación de búsqueda central [tal vez en Internet]. Si son visibles, entonces hay algo con su implementación.

No hay nada que te impida escribir tu propio protocolo más simple para el descubrimiento de servicios que se envía a través de multidifusión, es solo que hay montones de clientes Bonjour en una tonelada de diferentes idiomas ya escritos y probados.

Cuestiones relacionadas