Differences

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

Link to this comparison view

eim:laboratoare:laborator06 [2019/04/05 11:33]
dragos.niculescu
eim:laboratoare:laborator06 [2022/04/14 12:48] (current)
dragos.niculescu
Line 1: Line 1:
-====== Laborator 06. Comunicația prin Sockeți ​TCP ====== +====== Laborator 06. Comunicația prin Sockeți ​în Android ​====== 
 + 
 ===== Realizarea Conexiunii între o Mașină Fizică și Dispozitivul Mobil ===== ===== Realizarea Conexiunii între o Mașină Fizică și Dispozitivul Mobil =====
  
Line 33: Line 33:
  
 <​code>​ <​code>​
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices
 List of devices attached List of devices attached
 0019531d59461f ​   device 0019531d59461f ​   device
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ ./adb -s 0019531d59461f shell+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ ./adb -s 0019531d59461f shell
 shell@n7000:/​ $ su shell@n7000:/​ $ su
 su su
Line 47: Line 47:
 <note important>​Pe Linux, în situația în care dispozitivul mobil este detectat, fără a se indica tipul său, este necesar să se pornească serverul de ADB cu drepturi de administrator:​ <note important>​Pe Linux, în situația în care dispozitivul mobil este detectat, fără a se indica tipul său, este necesar să se pornească serverul de ADB cu drepturi de administrator:​
 <​code>​ <​code>​
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices
 List of devices attached List of devices attached
 0019531d59461f ​   ????????????​ 0019531d59461f ​   ????????????​
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb kill-server +student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb kill-server 
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb start-server +student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb start-server 
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb devices+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ sudo ./adb devices
 List of devices attached List of devices attached
 0019531d59461f ​   device 0019531d59461f ​   device
Line 67: Line 67:
  
 <​code>​ <​code>​
-student@eim2017:~$ sudo ifconfig usb0+student@eim-lab:~$ sudo ifconfig usb0
 usb0      Link encap:​Ethernet ​ HWaddr 32:​ca:​4b:​1c:​ff:​7b ​ 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           inet addr:​192.168.42.170 ​ Bcast:​192.168.42.255 ​ Mask:​255.255.255.0
Line 115: Line 115:
 Adresa IP care a fost atașată fiecărui dispozitiv virtual Genymotion poate fi verificată:​ Adresa IP care a fost atașată fiecărui dispozitiv virtual Genymotion poate fi verificată:​
   * folosind comanda ''​adb devices'';​ <​code>​   * folosind comanda ''​adb devices'';​ <​code>​
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices
 List of devices attached List of devices attached
 192.168.56.101:​5555 ​    ​device 192.168.56.101:​5555 ​    ​device
Line 124: Line 124:
  
 Conectivitatea dintre mașina de dezvoltare și dispozitivul virtual poate fi verificată folosind comanda ''​ping''​. <​code>​ Conectivitatea dintre mașina de dezvoltare și dispozitivul virtual poate fi verificată folosind comanda ''​ping''​. <​code>​
-student@eim2017:~$ ping 192.168.56.101+student@eim-lab:~$ ping 192.168.56.101
 Pinging 192.168.56.101 with 32 bytes of data: Pinging 192.168.56.101 with 32 bytes of data:
 Reply from 192.168.56.101:​ bytes=32 time<1ms TTL=64 Reply from 192.168.56.101:​ bytes=32 time<1ms TTL=64
Line 149: Line 149:
  
   * prin rularea comenzii ''​adb devices''​ <​code>​   * prin rularea comenzii ''​adb devices''​ <​code>​
-student@eim2017:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices+student@eim-lab:/​opt/​android-sdk-linux/​platform-tools$ ./adb devices
 List of devices attached List of devices attached
 emulator-5554 ​  ​device emulator-5554 ​  ​device
Line 155: Line 155:
  
 Conectarea la consola dispozitivului virtual Android se face prin comanda: <​code>​ Conectarea la consola dispozitivului virtual Android se face prin comanda: <​code>​
-student@eim2017:~$ telnet localhost 55nr+student@eim-lab:~$ telnet localhost 55nr
 </​code>​ </​code>​
 specificându-se portul pe care rulează emulatorul. specificându-se portul pe care rulează emulatorul.
Line 176: Line 176:
  
 <​code>​ <​code>​
-student@eim2017:~$ telnet localhost 5554+student@eim-lab:~$ telnet localhost 5554
 Android Console: type '​help'​ for a list of commands Android Console: type '​help'​ for a list of commands
 OK OK
Line 191: Line 191:
 exit exit
 Connection to host lost. Connection to host lost.
-student@eim2017:~$+student@eim-lab:~$
 </​code>​ </​code>​
  
Line 234: Line 234:
 <code java> <code java>
 String hostname = "​localhost";​ String hostname = "​localhost";​
-int port = 2017;+int port = 2000;
 Socket socket = new Socket(hostname,​ port); Socket socket = new Socket(hostname,​ port);
 </​code>​ </​code>​
Line 605: Line 605:
 </​note>​ pentru a afla varianta folosită implicit. ​ </​note>​ pentru a afla varianta folosită implicit. ​
 <​code>​ <​code>​
-student@eim2017:~$ nc 172.16.7.89 ​2017+student@eim-lab:~$ nc 172.16.7.89 ​2000
 Hello, EIM Student! Hello, EIM Student!
-student@eim2017:~$ time nc 172.16.7.89 ​2017+student@eim-lab:~$ time nc 172.16.7.89 ​2000
 Hello, EIM Student! Hello, EIM Student!
  
Line 734: Line 734:
 În cazul în care mesajul de întâmpinare conține mai multe linii, mesajul este precedat de șirul de caractere ''​220-''​ (reținut în ''​Constants.FTP_MULTILINE_START_CODE''​). Mesajul se încheie fie cu șirul de caractere ''​220'',​ fie cu un șir de caractere precedat de ''​220 ''​ (valori stocate în ''​Constants.FTP_MULTILINE_END_CODE1'',​ respectiv ''​Constants.FTP_MULTILINE_END_CODE2''​). În cazul în care mesajul de întâmpinare conține mai multe linii, mesajul este precedat de șirul de caractere ''​220-''​ (reținut în ''​Constants.FTP_MULTILINE_START_CODE''​). Mesajul se încheie fie cu șirul de caractere ''​220'',​ fie cu un șir de caractere precedat de ''​220 ''​ (valori stocate în ''​Constants.FTP_MULTILINE_END_CODE1'',​ respectiv ''​Constants.FTP_MULTILINE_END_CODE2''​).
  
-{{ :​eim:​laboratoare:​laborator06:​03ftp_server_welcome_message.png?​nolink&​400 }}+{{ :​eim:​laboratoare:​ex5_ftp_image.png?​nolink&​400 }}
  
 Operațiile care trebuie realizate pe metoda ''​doInBackground()''​ a firului de execuție ce gestionează comunicația cu serverul FTP sunt: Operațiile care trebuie realizate pe metoda ''​doInBackground()''​ a firului de execuție ce gestionează comunicația cu serverul FTP sunt:
Line 750: Line 750:
   - închiderea socket-ului.   - închiderea socket-ului.
  
-Să se verifice mesajul afișat în momentul în care se realizează o conexiune la serverul [[ftp.ngc.com|]].+Să se verifice mesajul afișat în momentul în care se realizează o conexiune la serverul [[intranet.ngcaerospace.com/|]].
  
 **5.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​SingleThreadedServer''​ din directorul ''​labtasks''​. **5.** Să se importe în mediul integrat de dezvoltare Android Studio proiectul ''​SingleThreadedServer''​ din directorul ''​labtasks''​.
  
-Acesta reprezintă o aplicație Android care implementează un server ce ascultă pe un port (2017, în ''​Constants.SERVER_PORT''​) solicitări de conexiune provenite de la clienți.+Acesta reprezintă o aplicație Android care implementează un server ce ascultă pe un port (2000, în ''​Constants.SERVER_PORT''​) solicitări de conexiune provenite de la clienți.
  
 Pe același fir de execuție pe care se face așteptarea,​ este realizată și transmiterea mesajului către client, preluat dintr-un câmp text. Pe același fir de execuție pe care se face așteptarea,​ este realizată și transmiterea mesajului către client, preluat dintr-un câmp text.
Line 769: Line 769:
  
 <​code>​ <​code>​
-student@eim2017:~$ nc 172.16.7.89 ​2017+student@eim-lab:~$ nc 172.16.7.89 ​2000
 Hello, EIM Student! Hello, EIM Student!
-student@eim2017:~$ time nc 172.16.7.89 ​2017+student@eim-lab:~$ time nc 172.16.7.89 ​2000
 Hello, EIM Student! Hello, EIM Student!
  
Line 796: Line 796:
  
 <​code>​ <​code>​
-C:​\Users\Student>​ telnet 192.168.56.101 ​2017+C:​\Users\Student>​ telnet 192.168.56.101 ​2000
 Start Server Start Server
  
 Connection to host lost. Connection to host lost.
-C:​\Users\Student>​ telnet 192.168.56.101 ​2017 +C:​\Users\Student>​ telnet 192.168.56.101 ​2000 
-Connecting To 192.168.56.101...Could not open connection to the host, on port 2017: Connect failed+Connecting To 192.168.56.101...Could not open connection to the host, on port 2000: Connect failed
 </​code>​ </​code>​
  
Line 886: Line 886:
 <note important>​Accesul la controalele grafice trebuie să fie realizat numai din contextul firului de execuție asociat interfeței cu utilizatorul.</​note>​ <note important>​Accesul la controalele grafice trebuie să fie realizat numai din contextul firului de execuție asociat interfeței cu utilizatorul.</​note>​
  
-**c)** Să se pornească serverul (se introduce textul //Start Server//). În client, să se verifice valoarea furnizată în cazul în care se introduc valorile ''​127.0.0.1''​ / ''​2017'',​ respectiv ''​localhost''​ / ''​2017''​. ​+**c)** Să se pornească serverul (se introduce textul //Start Server//). În client, să se verifice valoarea furnizată în cazul în care se introduc valorile ''​127.0.0.1''​ / ''​2000'',​ respectiv ''​localhost''​ / ''​2000''​. ​
  
 Să se oprească serverul (se introduce textul //Stop Server//). Să se verifice ce valori sunt furnizate în această situație. Să se oprească serverul (se introduce textul //Stop Server//). Să se verifice ce valori sunt furnizate în această situație.
  
-**d)** (doar Linux) Să se creeze o listă cu procesele care rulează la momentul curent, textul putând fi obținut, linie cu linie, prin intermediul unei conexiuni pe portul ​2017, serverul fiind astfel simulat pe mașina fizică.+**d)** (doar Linux) Să se creeze o listă cu procesele care rulează la momentul curent, textul putând fi obținut, linie cu linie, prin intermediul unei conexiuni pe portul ​2000, serverul fiind astfel simulat pe mașina fizică.
  
 <​code>​ <​code>​
-student@eim:​~$ ps a | while read x; do echo "​$x"​ | nc -l 2017; done+student@eim:​~$ ps a | while read x; do echo "​$x"​ | nc -l 2000; done
 </​code>​ </​code>​
  
 <note tip>Pe mașinile Debian, comanda ''​nc''​ se rulează cu opțiunea suplimentară ''​-p''​ pentru a se indica portul pe care se dorește ca acesta să accepte invocările.</​note>​ <note tip>Pe mașinile Debian, comanda ''​nc''​ se rulează cu opțiunea suplimentară ''​-p''​ pentru a se indica portul pe care se dorește ca acesta să accepte invocările.</​note>​
  
-Să se folosească clientul pentru a citi, linie cu linie, valorile furnizate de script-ul anterior. Va trebui precizată adresa mașinii fizice (în funcție de configurația folosită) și portul ​2017.+Să se folosească clientul pentru a citi, linie cu linie, valorile furnizate de script-ul anterior. Va trebui precizată adresa mașinii fizice (în funcție de configurația folosită) și portul ​2000
  
 {{ :​eim:​laboratoare:​laborator06:​05client_server_communication.png?​nolink&​400 }} {{ :​eim:​laboratoare:​laborator06:​05client_server_communication.png?​nolink&​400 }}
eim/laboratoare/laborator06.1554453212.txt.gz · Last modified: 2019/04/05 11:33 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