Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
laboratoare:laborator06 [2016/04/08 06:29]
Andrei Roșu-Cojocaru
laboratoare:laborator06 [2017/02/20 20:54] (current)
Line 149: Line 149:
 specificându-se portul pe care rulează emulatorul. specificându-se portul pe care rulează emulatorul.
  
-În consolă, realizarea unei legături între mașina fizică și dispozitivul virtual Android se face prin [[http://​developer.android.com/​tools/​devices/​emulator.html#​portredirection|redirectarea portului]], folosind comanda ''​redir'',​ aceasta suportând mai multe opțiuni:+În consolă, realizarea unei legături între mașina fizică și dispozitivul virtual Android se face prin [[http://​developer.android.com/​tools/​help/​emulator.html#​redirection|redirectarea portului]], folosind comanda ''​redir'',​ aceasta suportând mai multe opțiuni:
   * ''​list'';​   * ''​list'';​
   * ''​add'';​   * ''​add'';​
Line 315: Line 315:
 Se dorește interogarea serverului National Institute of Standards & Technology, care oferă un serviciu de interogare a datei și orei curente, cu o precizie ridicată, conform [[https://​tools.ietf.org/​html/​rfc867|Daytime Protocol (RFC-867)]]. Se dorește interogarea serverului National Institute of Standards & Technology, care oferă un serviciu de interogare a datei și orei curente, cu o precizie ridicată, conform [[https://​tools.ietf.org/​html/​rfc867|Daytime Protocol (RFC-867)]].
  
-{{ :​laboratoare:​laborator06:​daytime_protocol.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​01day_time_protocol.png?​nolink&​400 }}
  
 În acest sens, se va deschide un socket TCP, prin interogarea serverului disponibil la adresa [[time-b.nist.gov|]],​ pe portul 13, în cadrul unui fir de execuție separat (clasa ''​NISTCommunicationThread''​). Întrucât nu este necesară decât operația de primire a unor date, se va crea doar un obiect de tip ''​BufferedReader'',​ citindu-se două linii (una fiind vidă - așadar ignorată, cealaltă conținând informațiile necesare, care se doresc a fi afișate). Întrucât modificarea conținutului unui control grafic nu poate fi realizată decât din contextul firului de execuție în care a fost creat, acesta va fi obținut prin parametrul metodei ''​post()''​ a obiectului respectiv, doar aici fiind permisă asocierea conținutului solicitat. În momentul în care datele au fost preluate, socket-ul TCP poate fi închis. Pe fiecare eveniment de tip apăsare a butonului se va crea un fir de execuție dedicat în care se va instanția un obiect de tip ''​Socket''​. În acest sens, se va deschide un socket TCP, prin interogarea serverului disponibil la adresa [[time-b.nist.gov|]],​ pe portul 13, în cadrul unui fir de execuție separat (clasa ''​NISTCommunicationThread''​). Întrucât nu este necesară decât operația de primire a unor date, se va crea doar un obiect de tip ''​BufferedReader'',​ citindu-se două linii (una fiind vidă - așadar ignorată, cealaltă conținând informațiile necesare, care se doresc a fi afișate). Întrucât modificarea conținutului unui control grafic nu poate fi realizată decât din contextul firului de execuție în care a fost creat, acesta va fi obținut prin parametrul metodei ''​post()''​ a obiectului respectiv, doar aici fiind permisă asocierea conținutului solicitat. În momentul în care datele au fost preluate, socket-ul TCP poate fi închis. Pe fiecare eveniment de tip apăsare a butonului se va crea un fir de execuție dedicat în care se va instanția un obiect de tip ''​Socket''​.
Line 557: Line 557:
 </​file>​ </​file>​
  
-{{ :​laboratoare:​laborator06:​single_threaded_server.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​02single_threaded_server.png?​nolink&​400 }}
  
 Prin intermediul utilitarului ''​nc''​ (apelat cu adresa Internet și portul serverului) se poate interoga mesajul care a fost transmis. De asemenea, comanda ''​time''​ măsoară timpul în care a fost executată operația respectivă. Prin intermediul utilitarului ''​nc''​ (apelat cu adresa Internet și portul serverului) se poate interoga mesajul care a fost transmis. De asemenea, comanda ''​time''​ măsoară timpul în care a fost executată operația respectivă.
  
 <​code>​ <​code>​
-student@eim2016:​~$ nc 192.168.56.101 ​2015+student@eim2016:​~$ nc 192.168.56.101 ​2016
 Hello, EIM Student! Hello, EIM Student!
-student@eim2016:​~$ time nc 192.168.56.101 ​2015+student@eim2016:​~$ time nc 192.168.56.101 ​2016
 Hello, EIM Student! Hello, EIM Student!
  
Line 685: Line 685:
 Î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''​).
  
-{{ :​laboratoare:​laborator06:​ftp_server_welcome_message.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​03ftp_server_welcome_message.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 813: Line 813:
   - clientul dispune de două câmpuri text, prin care se precizează parametrii de conexiune la server (adresa de Internet / portul) precum și un buton prin intermediul căruia se realizează legătura propriu-zisă,​ fiind preluată informația din cadrul canalului de comunicație și afișată corespunzător.   - clientul dispune de două câmpuri text, prin care se precizează parametrii de conexiune la server (adresa de Internet / portul) precum și un buton prin intermediul căruia se realizează legătura propriu-zisă,​ fiind preluată informația din cadrul canalului de comunicație și afișată corespunzător.
  
-{{ :​laboratoare:​laborator06:​client_server_communication01.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​04client_server_communication.png?​nolink&​400 }}
  
 **a)** Să se implementeze funcționalitatea serverului. **a)** Să se implementeze funcționalitatea serverului.
Line 847: Line 847:
 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 2016. 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 2016.
  
-{{ :​laboratoare:​laborator06:​client_server_communication02.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​05client_server_communication.png?​nolink&​400 }}
  
 **7.** Să se importe în mediul integrat de dezvoltare preferat (Android Studio sau Eclipse) proiectul ''​PheasantGame''​ din directorul ''​labtasks''​. **7.** Să se importe în mediul integrat de dezvoltare preferat (Android Studio sau Eclipse) proiectul ''​PheasantGame''​ din directorul ''​labtasks''​.
Line 861: Line 861:
   - altfel, se trimite înapoi cuvântul primit pentru a semnala faptul că există o problemă.   - altfel, se trimite înapoi cuvântul primit pentru a semnala faptul că există o problemă.
  
-{{ :​laboratoare:​laborator06:​pheasant_game.png?​nolink&​400 }}+{{ :​laboratoare:​laborator06:​06pheasant_game.png?​nolink&​400 }}
  
 Astfel, serverul va avea următoarea funcționare:​ Astfel, serverul va avea următoarea funcționare:​
laboratoare/laborator06.1460086156.txt.gz · Last modified: 2017/02/20 20:44 (external edit)
CC Attribution-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0