Desafortunadamente, no puedes.
TL; DR
los sendto
La función regresa tan pronto como el paquete se haya enviado a la pila de IP. La pila de IP del núcleo lo procesará e intentará enviar el paquete a través de su interfaz WiFi.
Aquí radica el problema, el retraso en la transmisión de WiFi es largo (en comparación con Ethernet por cable) e irregular. Aquí hay un ejemplo de la latencia que debe esperar:
Este gráfico logarítmico muestra el tiempo de espera de ping entre mi servidor y mi enrutador y entre mi servidor y un cliente inalámbrico. Ya que ping
es bidireccional, la latencia unidireccional es probablemente alrededor de la mitad de eso.
La comunicación por cable muestra un tiempo de ping alrededor de 300us, mientras que los enlaces inalámbricos muestran un promedio de 7 ms (23 veces más de retraso).
Ahora casi el mismo gráfico, esta vez lineal para resaltar la irregularidad:
El tiempo de ping wifi varía entre 6 y 45 ms.
Soluciones?
Desde el sendto
La función regresa antes de lo que esperaba, realmente no puede medir en qué momento se envían los paquetes. Si está realmente interesado en el momento en que se envía el paquete, probablemente pueda estimarlo esperando una respuesta del cliente y reduciendo el tiempo de ida y vuelta.
Pero, como ya te diste cuenta , todos los clientes WiFi reciben el paquete al mismo tiempo, ya que es un multicast.
Así que la verdadera pregunta aquí es: ¿Qué estás intentando lograr?
Por ejemplo, si desea que todos sus clientes reproduzcan la misma transmisión de audio al mismo tiempo, algún tipo de software PLL debe hacer el truco
Si desea minimizar la demora, WiFi, aún puede intentar ajustar su configuración de WiFi, en particular las relacionadas con ahorro de energía, en el enrutador y en los clientes.
Y si quieres lograr algo duro en tiempo real Rendimiento, probablemente deberías olvidarte de WiFi.