2016-04-05 5 views
3

Ich habe ein real Android-Gerät an einen Computer über USB angeschlossen. Ich habe es geschafft, TCP Portweiterleitung mit adb forward tcp:<port> tcp:<port> zu aktivieren und erfolgreich mit Sockets zu kommunizieren, aber ich weiß nicht, wie das gleiche für UDP zu tun.Wie kann ich die UDP-Weiterleitung für USB-Kommunikation zwischen einem PC und einer Android-App aktivieren?

EDIT v1: Ich startete meine Anwendung auf dem Emulator und eingegeben telnet localhost 5554 und redir add udp:<port>:<port> und es gearbeitet, meine Funktion executeCMD ist functionnal, denn wenn ich ls versuchen es funktioniert.

Einige sagten Websites redir wie diese verwenden redir add udp:<port>:<port> aber wenn ich so erhalte ich einen Fehler:

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. 

Dann dachte ich, dieser Befehl Einführung auf dem Android-Gerät sein soll, damit ich diese Methode erstellt:

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(); 
} 

Und wenn ich es so genannt:

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

Ich bekomme keine Ausgabe und der UDP Server auf der Android App kann nicht mit dem UDP Client kommunizieren.

Also bin ich ein bisschen verloren ... Ich werde weiter suchen, aber wenn Sie mir helfen können; gehen Sie geradeaus.

Danke.

Antwort

0

So endlich habe ich nicht herausfinden, wie UDP für USB-Kommunikation Weiterleitung zu aktivieren, aber ich habe irgendwas anderes, das funktioniert ziemlich gut, aber Sie haben USB zu ermöglichen Anbinden(vom Computer ping das Telefon zu sehen wenn es richtig aktiviert ist):

  1. erstellen TCP-Server auf dem Telefon und einen TCP-Client auf dem Desktop.
  2. Führen Sie adb tcp:<port> tcp:<port> auf dem Desktop, so dass es mit dem Telefon über localhost über TCP-Sockets kommunizieren kann.
  3. Lassen Sie den TCP-Server die IP-Adresse (auf dem USB-Tethering-Netzwerk) Ihres Telefons an den TCP-Client senden.
  4. Dann können Sie die TCP-Verbindung schließen und mit der Adresse können Sie eine UDP-Verbindung mit Socket wie in einer normalen Situation initiieren.