Estos días he estado mirando el código de SoapyRemote y he encontrado la forma de poder modificarlo para que realmente vaya de forma remota. En esta nota podré como lo he hecho. La descripción de cómo funciona el software se puede encontrar en los últimos párrafos de la wiki.
SoapyRemote utiliza 3 puertos:
- 1 de control, que es el que se utiliza para coger los parámetros de bandwidth, driver, etc. El puerto por defecto es el 55312
- 1 puerto de streaming, que se asigna automáticamente
- 1 puerto que no me queda claro que hace, pero supongo que es para RPC
Para poner un puerto fijo hay que cambiar la linea ClientHandler.cpp#L339:
//const auto bindURL = SoapyURL(prot, localNode, "0").toString();
const auto bindURL = SoapyURL(prot, localNode, "25566").toString();
Y también en Streaming.cpp#L246:
//const auto bindURL = SoapyURL("udp", localNode, "0").toString();
const auto bindURL = SoapyURL("udp", localNode, "25565").toString();
De esta forma cambiamos la librería. Es una chapuza, pero funciona. Para el futuro estaría muy bien modificar el software para que pudieses elegir en el sever que puerto quieres, y que el usuario lo sepa.
Me estoy dando cuenta de que la estructura de datos de packer define en el primer byte de qué paquete se trata, y luego el clienthandler es el que dependiendo del paquete procede de una forma u otra.
—
Voy a apuntar algunas cosas para organizarme:
- En
client/Settings.cpp
es donde se definen las funciones para conseguir los valores del servidor de la configuración
El ClientHandler se lanza en handleOnce de ServerListener que se lanza en el SoapyServer.