Differences

This shows you the differences between two versions of the page.

Link to this comparison view

eim:laboratoare:laborator08 [2018/04/26 20:28]
dragos.niculescu [Activitate de Laborator]
eim:laboratoare:laborator08 [2021/05/06 08:29] (current)
madalina.barbu [Activitate de Laborator]
Line 54: Line 54:
 Apoi se poate verifica cu tcpdump traficul specific DNS-SD care este generat: ​ Apoi se poate verifica cu tcpdump traficul specific DNS-SD care este generat: ​
 <code shell> <code shell>
-#tcpdump -ni eth0 'udp port 5353'+#tcpdump -ni eth0 -s0 -w '​file1.pcap' ​'udp port 5353'
 </​code>​ </​code>​
 +
 +Traficul capturat în file1.pcap poate fi examinat cu ''​wireshark file1.pcap''​. Dacă ați rulat tcpdump pe telefon, este necesară aducerea fișierului .pcap pe desktop cu jurorul comanzii ''​adb pull /​sdcard/​file1.pcap .'' ​
  
 Din alt terminal, se poate lansa o căutare de servicii de tipul chatservice: ​ Din alt terminal, se poate lansa o căutare de servicii de tipul chatservice: ​
Line 988: Line 990:
 {{ :​eim:​laboratoare:​laborator09:​chatservice04.png?​nolink&​400 }} {{ :​eim:​laboratoare:​laborator09:​chatservice04.png?​nolink&​400 }}
  
-**1.** În contul Github personal, să se creeze un depozit denumit 'Laborator09'. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).+**1.** În contul Github personal, să se creeze un depozit denumit 'Laborator08'. Inițial, acesta trebuie să fie gol (nu trebuie să bifați nici adăugarea unui fișier ''​README.md'',​ nici a fișierului ''​.gitignore''​ sau a a fișierului ''​LICENSE''​).
  
 **2.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim-lab/​Laborator08|]]. ​ **2.** Să se cloneze în directorul de pe discul local conținutul depozitului la distanță de la [[https://​www.github.com/​eim-lab/​Laborator08|]]. ​
Line 1004: Line 1006:
 </​code>​ </​code>​
  
-**4.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ​''​ChatServiceAndroidNSD''​ sau ''​ChatServiceJmDNS''​ din directorul ''​labtasks''​.+**4.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​ChatServiceJmDNS''​ din directorul ''​labtasks''​.
  
 **5.** Să se ruleze aplicația Android pe două dispozitive mobile care să se găsească în aceeași rețea. **5.** Să se ruleze aplicația Android pe două dispozitive mobile care să se găsească în aceeași rețea.
Line 1011: Line 1013:
 <note tip> <note tip>
 În cazul Genymotion, se pot crea două imagini pentru două dispozitive mobile (virtuale) de același tip, care vor putea fi rulate separat, fiecare dintre acestea primind adrese Internet diferite din intervalul ''​192.168.56.101''​ → ''​192.168.56.254''​. În cazul Genymotion, se pot crea două imagini pentru două dispozitive mobile (virtuale) de același tip, care vor putea fi rulate separat, fiecare dintre acestea primind adrese Internet diferite din intervalul ''​192.168.56.101''​ → ''​192.168.56.254''​.
 +Pentru interfața WiFi, genymotion nu poate folosi decât NAT sau Bridge ([[https://​www.genymotion.com/​help/​desktop/​faq/#​network-configuration|manual Genymotion]]). Pentru acest laborator, este necesară configurația bridge. ​
  
-{{ :​laboratoare:​laborator09:​genymotion01.png?​nolink&​600 }} 
  
-În VirtualBox (> versiunea 4.3.26), se verifică faptul că dispozitivele virtuale comunică între ele prin intermediul unei interfețe de rețea, configurată să folosească ​NAT (Network Address Translation)+În VirtualBox (> versiunea 4.3.26), se verifică faptul că dispozitivele virtuale comunică între ele prin intermediul unei interfețe de rețea, configurată să folosească ​Bridge
  
 În acest sens, trebuie realizate următoarele operații: În acest sens, trebuie realizate următoarele operații:
 +  * în configurația aferentă fiecărui dispozitiv virtual (//​Machine//​ → //​Settings//​ sau Ctrl + S), se va selecta //Bridge// folosind rețeaua astfel definită pentru interfața //Adapter 2//
  
-  * se va crea rețea NAT în cadrul VirtualBox ​(//File// → //​Preferences// ​sau Ctrl + G)+  * apoi se setează ​adresă MAC random pentru adapter 2 (manual, ​sau cu butonul asociat)
  
-{{ :eim:​laboratoare:​laborator09:​virtualbox01.png?​nolink&​400 }}+Acestea vor putea rula instanțe diferite ale aplicației Android, fiecare folosind __**o denumire proprie pentru serviciu**__ (la valoarea generică ''​Constants.SERVICE_NAME''​ definită în pachetul ''​ro.pub.cs.systems.eim.lab08.chatservice.general''​ se sufixează în mod automat un șir de caractere generat aleator, astfel încât aceasta să fie unică în rețeaua locală).
  
-{{ :eim:​laboratoare:​laborator09:​virtualbox02.png?​nolink&​400 }}+Se verifică faptul că fiecare aplicație Android rulează pe un dispozitiv diferit:
  
-  * în configurația aferentă fiecărui dispozitiv virtual (//​Machine//​ → //​Settings//​ sau Ctrl + S), se va selecta //NAT Network// folosind rețeaua astfel definită pentru interfața //Adapter 2//+{{ :​eim:​laboratoare:​laborator09:​genymotion02.png?​nolink&​600 }}
  
-<​hidden>​+{{ :​eim:​laboratoare:​laborator08:​vbox_bridge.png?​nolink&​400}}
  
   * în configurația aferentă fiecărui dispozitiv virtual (//​Machine//​ → //​Settings//​ sau Ctrl + S), se va selecta //Bridged// folosind rețeaua astfel definită pentru interfața //Adapter 2//   * în configurația aferentă fiecărui dispozitiv virtual (//​Machine//​ → //​Settings//​ sau Ctrl + S), se va selecta //Bridged// folosind rețeaua astfel definită pentru interfața //Adapter 2//
-  * În acest mod, fiecare ​telefon ​va fi cuplat în rețaua laboratorului,​ iar cu comanda avahi-browse -rk _chatservice._tcp se pot vizualiza toate instanțele care rulează în acel moment  ​ +  * În acest mod, fiecare ​emulator ​va fi cuplat în rețeaua laboratorului,​ iar cu comanda avahi-browse -rk _chatservice._tcp se pot vizualiza toate instanțele care rulează în acel moment  ​
-</​hidden>​+
  
-{{ :​eim:​laboratoare:​laborator09:​virtualbox03.png?​nolink&​400 }} +===== Telefon personal ===== 
- +  Pentru a folosi telefonul personalshe recomanda reteaua wifi EG106, care este in bridge cu toate PCurile din sala. Se poate folosi ​un emulator in bridge ca partener pentru telefon
-</​note>​ +
- +
-Acestea vor putea rula instanțe diferite ale aplicației Android, fiecare folosind __**o denumire proprie pentru serviciu**__ (la valoarea generică ''​Constants.SERVICE_NAME''​ definită în pachetul ''​ro.pub.cs.systems.eim.lab08.chatservice.general''​ se sufixează în mod automat un șir de caractere generat aleatorastfel încât aceasta să fie unică în rețeaua locală). +
- +
-Se verifică faptul că fiecare aplicație Android rulează pe un dispozitiv diferit: +
- +
-{{ :​eim:​laboratoare:​laborator09:​genymotion02.png?​nolink&​600 }}+
  
-În Logcat, se pot utiliza filtre diferite pentru fiecare dintre dintre instanțele aplicației Android, astfel încât să se faciliteze procesul de depanare.+  * În Logcat, se pot utiliza filtre diferite pentru fiecare dintre dintre instanțele aplicației Android, astfel încât să se faciliteze procesul de depanare.
  
-**5b.** Să se utilizeze utilitarul ZeroConf Browser, deja instalat pe emulatoare pentru a identifica serviciile pornite în rețea. Dacă emulatoarele sunt în aceeași rețea cu o mașină Linux, se poate rula ''​avahi-browse -rk _chatservice._tcp''​ pentru a vizualiza serviciile pornite ​+**5b.** Să se utilizeze utilitarul ZeroConf Browser, deja instalat pe emulatoare pentru a identifica serviciile pornite în rețea. Dacă emulatoarele sunt în aceeași rețea cu o mașină Linux, se poate rula ''​avahi-browse -rk _chatservice._tcp''​ pentru a vizualiza serviciile pornite 
 +{{:​eim:​laboratoare:​laborator08:​zeroconfbrowser1.png?​nolink&​300|}} ​
  
 **5c.** La momentul publicării cu succes a serviciului (când butonul devine verde), să se colecteze adresele IP locale pe care serviciul devine vizibil. Aceasta se face în funcția OnCreateView a listener-ului care primește schimbarea stării serviciului (ServiceDiscoveryStatusButtonListener). ​ **5c.** La momentul publicării cu succes a serviciului (când butonul devine verde), să se colecteze adresele IP locale pe care serviciul devine vizibil. Aceasta se face în funcția OnCreateView a listener-ului care primește schimbarea stării serviciului (ServiceDiscoveryStatusButtonListener). ​
Line 1165: Line 1161:
   - cum se face descoperirea serviciilor (prin ce tip de mesaje)? ​   - cum se face descoperirea serviciilor (prin ce tip de mesaje)? ​
  
 +**9.** Folosind instrucțiunile din secțiunea **Zeroconf sub Linux** de mai sus
 +    - pe PC-ul local publicați un serviciu pe portul 5003
 +    - rulați serviciul folosind ''​while true; do nc -v -l -p 5003; done''​
 +    - verificați interoperabilitatea cu clienții implementați pe Android
 +    - puteți folosi clienți Linux cu comanda ''​nc <​adresă>​ <​port>''​ pentru a conversa cu un server descoperit la 
 + ''​adresa:​port''​ (pe Android sau Linux). ​  
  
-**9.**  Să se încarce modificările realizate în cadrul depozitului '​Laborator08'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​+**10.**  Să se încarce modificările realizate în cadrul depozitului '​Laborator08'​ de pe contul Github personal, folosind un mesaj sugestiv. <​code>​
 student@eg106:​~/​Laborator08$ git add * student@eg106:​~/​Laborator08$ git add *
 student@eg106:​~/​Laborator08$ git commit -m "​implemented tasks for laboratory 08" student@eg106:​~/​Laborator08$ git commit -m "​implemented tasks for laboratory 08"
eim/laboratoare/laborator08.1524763691.txt.gz · Last modified: 2018/04/26 20:28 by dragos.niculescu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0