Tengo una PC con dos tarjetas de red conectadas a diferentes redes (configuración de red multi-hogar). Deseo enviar marcos de transmisión UDP en ambas redes. La dirección IP de los remitentes de los marcos debe ser la dirección IP del adaptador, que se utiliza para enviar el marco. La dirección de destino debe ser la dirección LIMITADA DE DIFUSIÓN.Envío de difusión UDP en Windows 7
La aplicación del cliente no debe ejecutarse con derechos administrativos (UAC no es aceptable).
¿Cómo puedo enviar estos marcos UDP a la dirección LIMITADA DE DIFUSIÓN (255.255.255.255)? ¿Cómo podría enviar estos marcos a la dirección de LANZAMIENTO DE RED (x.y.z.255)?
Sé cómo hacer esto con sockets sin procesar. Pero los sockets sin formato solo se pueden usar con derechos administrativos.
No. La vinculación de un socket afecta a qué paquetes recibidos son aceptados por este socket. Los paquetes enviados se enrutan según las reglas de enrutamiento de IP. Puedo repetir los adaptadores y las direcciones IP vinculadas a estos adaptadores y enviar una transmisión de red por cada dirección IP. Pero esto no se envía a la dirección LIMITADA DE DIFUSIÓN. – harper
¿Estás seguro? Cuando emite un SendTo, el socket está vinculado implícitamente al socket local que se utiliza para enviar, de modo que el destinatario pueda responder. Puede ver esto en acción ya que no puede hacer una RecvFrom sin vincular o enviar previamente en el socket ... Si tiene dos interfaces que podrían enrutar al mismo destino, el sistema operativo selecciona una si no se ha enlazado. Puede enlazar antes de emitir un SendTo para seleccionar la dirección local. –
Ah, ya veo. ¡Tienes razón! En Windows 7, la llamada bind() afecta a recibir Y TRANSMITIR marcos. Esta es una diferencia con el comportamiento de Windows XP, donde los marcos se han enviado con cualquier dirección de adaptador arbitraria a todos los adaptadores. Necesita conectores RAW con Windows XP para enviar direcciones de origen apropiadas. Pero Windows 7 envía BROADCASTS LIMITADAS al adaptador al que está destinado el socket. Muchas gracias, Harper – harper