5 votos

¿Cómo puedo activar el reenvío UDP para la comunicación USB entre un PC y una aplicación Android

Tengo un real Un dispositivo Android conectado a un ordenador a través de un USB. Me las arreglé para activar TCP de los puertos con adb forward tcp:<port> tcp:<port> y comunicarse con éxito con los enchufes, pero no sé cómo hacer lo mismo para UDP .

EDITAR : Lancé mi aplicación en el emulador y escribí telnet localhost 5554 y redir add udp:<port>:<port> y eso funcionó, mi función ejecutarCMD es funcional porque cuando intento ls está funcionando.

Algunos sitios web dicen que usan redir como esto redir add udp:<port>:<port> pero cuando lo hago obtengo un error:

usage:
    redir --lport=<n> --cport=<n> [options]
    redir --inetd --cport=<n>

    Options are:-
        --lport=<n>     port to listen on
        --laddr=IP      address of interface to listen on
        --cport=<n>     port to connect to
        --caddr=<host>      remote host to connect to
        --inetd     run from inetd
        --debug     output debugging info
        --timeout=<n>   set timeout to n seconds
        --syslog    log messages to syslog
        --name=<str>    tag syslog messages with 'str'
        --connect=<str> CONNECT string passed to proxy server
        --bind_addr=IP  bind() outgoing IP to given addr
        --ftp=<type>        redirect ftp connections
            where type is either port, pasv, both
        --transproxy    run in linux's transparent proxy mode
        --bufsize=<octets>  size of the buffer
        --max_bandwidth=<bit-per-sec>   limit the bandwidth
        --random_wait=<millisec>    wait before each packet
        --wait_in_out=<flag>    1 wait for in, 2 out, 3 in&out

    Version 2.2.1.

Entonces pensé que este comando debería ser lanzado en el dispositivo Android, así que creé este método:

 public String executeCMD(String cmd){
    StringBuffer output = new StringBuffer();
    try{
        Process process = Runtime.getRuntime().exec(cmd);
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        int read;
        char[] buffer = new char[4096];
        while ((read = reader.read(buffer)) > 0) output.append(buffer, 0, read);

        reader.close();
        process.waitFor();

    } catch(IOException e){ e.printStackTrace();
    } catch(InterruptedException e){ e.printStackTrace(); }

    return output.toString();
}

Y cuando lo llamé así:

executeCMD("redir add udp:" + UDP_PORT + ":" + UDP_PORT)

No tengo salida y el UDP en la aplicación de Android no puede comunicarse con el UDP cliente.

Así que estoy un poco perdido... Seguiré buscando, pero si puedes ayudarme, adelante.

Gracias.

0voto

imjustmatthew Puntos 61

Así que finalmente, no descubrí cómo habilitar UDP reenviando para la comunicación USB pero hice otras cosas que funcionan bastante bien, pero tienes que habilitar la conexión USB ( desde el ordenador, haciendo un ping al teléfono para ver si está correctamente habilitado ):

  1. Crea un servidor TCP en el teléfono y un cliente TCP en el escritorio.

  2. Ejecuta adb tcp: tcp: en el escritorio para que pueda comunicarse con el teléfono del localhost a través de los sockets TCP.

  3. Hacer que el servidor TCP envíe la dirección IP (en la red de ataduras USB) de tu teléfono al cliente TCP.

  4. Entonces puedes cerrar la conexión TCP y con la dirección puedes iniciar una conexión UDP con socket como lo harías en una situación normal.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X