Retea locala
De obicei, servicile pe care le accesam in internet sunt accesibil din internet. Totusi, apar cazuri cand atat dispozitivul mobil cat si server-ul se afla in aceasi retea privata. Cel mai des intalnit caz fiind atunci cand dezvoltam o aplicatie, sau avem o aplicatie de telefon pentru un dispozitiv ce ruleaza local.
In acest caz in care dispozitivele se gasesc in aceasi retea, va fi nevoie sa realizam cateva lucruri in functie de circumstante (e.g. NAT).
Dispozitiv Fizic
O mașină fizică și un dispozitiv fizic pot comunica:
- prin plasarea lor în aceeași rețea fără fir (WiFi), având adresele IP furnizate de un server DHCP ce rulează pe un router;
- prin stabilirea unei legături punct la punct, folosind Bluetooth;
- printr-o conexiune de date realizată prin intermediul portului USB.
Pentru tethering, pe telefon, se accesează Settings → Wireless & Networks → Tethering & portable hotspot și se selectează opțiunea USB Tethering
Astfel, se va activa (în mod automat) interfața rndis0
, pentru care se
poate determina adresa Internet:
student@eim-lab:/opt/android-sdk-linux/platform-tools$ ./adb devices
List of devices attached
0019531d59461f device
student@eim-lab:/opt/android-sdk-linux/platform-tools$ ./adb -s 0019531d59461f shell
shell@n7000:/ $ su
su
shell@n7000:/ # ifconfig rndis0
ifconfig rndis0
rndis0: ip 192.168.42.129 mask 255.255.255.0 flags [up broadcast running multicast]
shell@n7000:/ #
Ulterior, se determină adresa Internet a mașinii fizice, asociată
interfeței usb0
(Linux), respectiv Ethernet (Windows).
Linux
student@eim-lab:~$ sudo ifconfig usb0
usb0 Link encap:Ethernet HWaddr 32:ca:4b:1c:ff:7b
inet addr:192.168.42.170 Bcast:192.168.42.255 Mask:255.255.255.0
inet6 addr: fe80::30ca:4bff:fe1c:ff7b/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:109 errors:0 dropped:0 overruns:0 frame:0
TX packets:319 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:24103 (23.5 KiB) TX bytes:64369 (62.8 KiB)
Windows
C:\Program Files (x86)\Android\android-sdk\platform-tools>ipconfig
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe80::18bf:d0be:3625:6b1%44
IPv4 Address. . . . . . . . . . . : 192.168.42.81
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 192.168.42.129
Dispozitiv Virtual (Emulator)
Android Virtual Device
Fiecare instanță a unui dispozitiv virtual Android oferă o pereche de porturi pentru diferite conexiuni:
- un port de consolă, prin intermediul căruia este permis accesul prin telnet pentru execuția de diverse comenzi;
- un port pentru
adb
.
Numerele folosite pentru aceste porturi sunt succesive. Implicit, numerotarea porturilor începe de la 5554 (portul de consolă) / 5555 (portul adb). Determinarea portului poate fi realizată:
- prin inspectarea ferestrei în care este afișat emulatorul, având forma Android Emulator (55nr), unde nr poate lua valori cuprinse între 54 și 87 (doar valori impare - pentru portul de consolă, valorile pare fiind rezervate pentru portul adb); astfel, sunt suportate maxim 16 instanțe de dispozitive virtuale Android simultan;

- prin rularea comenzii
adb devices
student@eim-lab:/opt/android-sdk-linux/platform-tools$ ./adb devices List of devices attached emulator-5554 device
Conectarea la consola dispozitivului virtual Android se face prin comanda:
student@eim-lab:~$ telnet localhost 55nr
specificându-se portul pe care rulează emulatorul.
Este necesară și autentificarea pe dispozitivul virtual respectiv, folosind o cheie care a fost instalată odată cu acesta, a cărei locație este indicată. În acest sens, se folosește comanda
auth
, urmată de cheia dispozitivului virtual. Cheia se află în~/.emulator_console_auth_token
În consolă, realizarea unei legături între mașina fizică și dispozitivul
virtual Android se face prin port
forwarding,
folosind comanda redir
, aceasta suportând mai multe opțiuni:
list
;add
;del
.
OPȚIUNE | DESCRIERE |
---|---|
list |
afișează toate redirectările de port folosite la momentul respectiv |
add <protocol>:<port_masina_fizica>:<port_dispozitiv_virtual> |
adaugă o redirectare de port ✔ <protocol> poate avea doar valorile tcp sau udp ✔ <port_masina_fizica> reprezintă numărul portului utilizat pe mașina fizică✔ <port_dizpozitiv_virtual> reprezintă numărul portului de pe dispozitivul virtual spre care vor fi redirecționate datele |
del <protocol>:<port_masina_fizica> |
șterge o redirectare de port |
De exemplu:
student@eim-lab:~$ telnet localhost 5554
Android Console: type 'help' for a list of commands
OK
redir add tcp:2000:4000
OK
redir list
tcp:2000 => 4000
OK
redir del tcp:2000
OK
redir list
no active redirections
OK
exit
Connection to host lost.
student@eim-lab:~$
Comenzi utile
Mai jos gasiti o serie de comenzi utile pentru a putea afisa adresele IP alocate pe un dispozitiv.
Interfețele, adresele, rutele (mașina de dezvoltare Linux)
student@eg106:~$ ip ro
default via 172.16.7.254 dev eno1 proto dhcp metric 100
169.254.0.0/16 dev eno1 scope link metric 1000
172.16.4.0/22 dev eno1 proto kernel scope link src 172.16.7.36 metric 100
172.16.101.0/24 dev vmnet1 proto kernel scope link src 172.16.101.1
192.168.57.0/24 dev vboxnet1 proto kernel scope link src 192.168.57.1
OSX
netstat -rn
In telefon sau emulator:
ipconfig