Como posso ativar o encaminhamento UDP para comunicação USB entre um PC e um aplicativo Android -- adb campo com usb campo com android-emulator campo com ad-hoc-networks camp android Relacionado O problema

How can I activate UDP forwarding for USB communication between a PC and an Android app


3
vote

problema

português

Eu tenho um dispositivo Real conectado a um computador via USB. Eu consegui ativar tcp encaminhamento de porta com adb forward tcp:<port> tcp:<port> e comunicar com sucesso com soquetes, mas não sei como fazer o mesmo para udp . < / p >.

.

editar : lançei minha inscrição no emulador e digitado telnet localhost 5554 e redir add udp:<port>:<port> e Trabalhou, minha função executada é funcional, porque quando eu tento ls Está funcionando.

Alguns sites disseram usar redir como este redir add udp:<port>:<port> mas quando eu faço, eu obtenho um erro:

  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.    

Então eu pensei que este comando deveria ser lançado no dispositivo Android, então eu criei 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(); }    

e quando eu liguei assim:

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

Eu não recebo saída e o servidor udp no aplicativo Android não pode se comunicar com o cliente udp .

Então eu estou um pouco perdido ... continuarei procurando, mas se você puder me ajudar; vá em frente.

obrigado.

english

I have an real Android device connected to a computer via USB. I managed to activate TCP port forwarding with adb forward tcp:<port> tcp:<port> and successfully communicate with sockets but I don't know how to do the same for UDP.

EDIT : I launched my application on the emulator and typed telnet localhost 5554 and redir add udp:<port>:<port> and it worked, my function executeCMD is functionnal because when I try ls it's working.

Some websites said to use redir like this redir add udp:<port>:<port> but when I do so I obtain an 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. 

Then I thought this command should be launch on the Android device so I created this method :

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

And when I called it like that :

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

I get no output and the UDP server on the Android app can't communicate with the UDP client.

So I'm a bit lost... I'll continue searching but If you can help me; go ahead.

Thanks.

           
     
     

Lista de respostas

0
 
vote
vote
Melhor resposta
 

Então, finalmente, não descobri como habilitar udp encaminhamento para comunicação USB, mas eu fiz algumas coisas que funciona muito bem, mas você tem que habilitar o tethering usb ( do computador ping o telefone para ver se é habilitado adequadamente ):

    .
  1. Crie um servidor TCP no telefone e um cliente TCP na área de trabalho.

  2. execute adb tcp: porta tcp: porta na área de trabalho para que ela possa se comunicar com o telefone no localhost via soquetes TCP.

  3. Faça o servidor TCP enviar o endereço IP (na rede de tethering USB) do seu telefone para o cliente TCP.
  4. Então você pode fechar a conexão TCP e com o endereço que você pode iniciar uma conexão UDP com soquete como faria em uma situação normal.
 

So finally, I did not find out how to enable UDP forwarding for USB communication but I did somethings else that works pretty well, but you have to enable USB tethering (from the computer ping the phone to see if it's properly enabled):

  1. Create a TCP server on the phone and a TCP client on the desktop.

  2. Execute adb tcp:port tcp:port on the desktop so it can communicate with the phone on localhost via TCP sockets.

  3. Make the TCP server send the IP address (on the USB tethering network) of your phone to the TCP client.
  4. Then you can close the TCP connection and with the address you can initiate an UDP connection with socket as you would in a normal situation.
 
 
   
   

Perguntas relacionadas

4  Não é possível ver o ponto de acesso do MacBook Wifi no smartphone Android  ( Cant see macbook wifi access point on android smartphone ) 
Eu gostaria de conectar meu telefone Android (Samsung Galaxy Nexus Running Stock Jellybean) para o meu MacBook Pro (início de 2012, executando o OSX Lion) atr...

8  Por que meu dispositivo não pode ver uma rede WiFi ad-hoc?  ( Why cant my device see an ad hoc wifi network ) 
Eu estou tentando conectar minha guia Galaxy à Internet através de uma rede ad-hoc feita através do meu PC. As configurações do PC Ad-Hoc são boas porque eu p...

1  Executando aplicativos no WiFi com proxy ou alternativo para rede ad-hoc entre laptop e telefone?  ( Running apps on wifi with proxy or alternate to ad hoc network between laptop an ) 
Minha casa Wi-Fi corre atrás de um proxy. Quando eu me conecto a partir do meu Samsung Galaxy S com o Android 2.3.3, depois de inserir o número de proxy e p...

1  Como usar o espelhamento de tela. Qual protocolo de rede faz o espelhamento de tela?  ( How to use screen mirroring what network protocol does screen mirroring use ) 
Eu tenho um Samsung Galaxy Siii (GT-I9300) que suporta espelhamento de tela. eu gostaria Para usar esse recurso para compartilhar minha tela com um Samsung Ga...

0  Imprimir via rede ad-hoc para impressora sem fio?  ( Print via ad hoc network to wireless printer ) 
Existe uma maneira de imprimir a partir de um dispositivo Android para uma impressora sem fio conectada à rede ad-hoc sendo transmitida pelo dispositivo Andro...

1  Consuemd Power para telefones Android no modo AdHoc  ( Consuemd power for android phones in adhoc mode ) 
Eu quero saber as seguintes informações: 1 - o poder consumido pelo smartphone quando enviar / receber balizas ao conectar-se com outro dispositivo no modo ...

1  Por que o Android não consegue se conectar a um hotspot ad hoc? [duplicado]  ( Why cant android connect to an ad hoc hotspot ) 
. Esta pergunta já tem respostas aqui : fechado 8 anos atrás . . Duplicado possível: Por que ...

2  Não foi possível ativar a função de hotspot móvel no HTC One X  ( Could not enable mobile hotspot function on htc one x ) 
Eu estou usando o HTC One X e eu estava tentando ativar a função de hotspot móvel, para que eu pudesse apreciar a Internet do meu PC Adhoc Wireless Network, m...

3  O Android 2.3 suporta redes Wi-Fi ad-hoc? [duplicado]  ( Does android 2 3 support ad hoc wi fi networks ) 
. Esta pergunta já tem respostas aqui : Qualquer versão do Android suporta conexões ad-hoc? ...

7  Qualquer versão do Android suporta conexões ad-hoc?  ( Does any version of android support ad hoc connections ) 
Acabei de comprar um Lenovo IdeaPad A1 que executa Android 2.3. Parece que a conexão do dispositivo a uma rede ad-hoc não é possível. Alguma outra versão ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.