Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

4. alkalom – Hálózat Kezelés

Hasonló előadás


Az előadások a következő témára: "4. alkalom – Hálózat Kezelés"— Előadás másolata:

1 4. alkalom – Hálózat Kezelés
Android tanfolyam 4. alkalom – Hálózat Kezelés

2 Alapok – DNS/IP DNS Hierechikus fa.
Hálózatba kötött gépekhez rendel szöveges azonosítót. IP IPv4: IPv6: 2001:738:2001:2078:0:208:88:0 url:

3 Alapok – UDP 1/2 | Forrás | Cél | | Port | Port | | |Ellenőrző összeg | | Hossz | | | | | Adat … |

4 Alapok – UDP 2/2 Tulajdonságai: Port alapú (0-65535)
Nincs garantált csomag kézbesítés! Gyors. (Nincs protokoll overhead) Gyakorlati példa: Média lejátszás hálózaton keresztül (YouTube) telnet ICMP

5 Alapok – TCP 1/3 | Source Port | Destination Port | | Sequence Number | | Acknowledgment Number | | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | | Checksum | Urgent Pointer | | Options | Padding | | data |

6 Alapok – TCP 2/3 Tulajdonságai: Port alapú (0-65535)
Biztosítja a csomag megérkezését. Összerakja a csomagot. Az UDP-nél lassabb. Minden elküldött csomagot n-szer újra küld ha nem érkezik rá válasz. Gyakorlati alkalmazás: HTTP(S) / SSH /LDAP / DNS (Ez lehet UDP is) /STB

7 Alapok – TCP 3/3

8 Java példa program (kliens)
//kapcsolat felépítése: try { socketClient = new Socket(ip, 8180); sout = new PrintWriter(socketClient.getOutputStream(), true); sin = new BufferedReader(new InputStreamReader(socketClient.getInputStream())); } catch (Exception e) { // TODO: Exception Handling } //Üzenet küldése: sout.println(”Hello World!”); //Kapcsolat lezárása // TODO: Connection close.

9 Java példa program (szerver)
//szerveren prot nyitás: try { server = new ServerSocket(8180); socketClient = server.accept(); sout = new PrintWriter(socketClient.getOutputStream(), true); sin = new BufferedReader(new InputStreamReader(socketClient.getInputStream())); } catch (Exception e) { // TODO: Exception Handling } // Üzenet fogadása: s = sin.readLine(); System.out.println(s); //Kapcsolat lezárása // TODO: Connection close.

10 Egy kis kitérés, szál kezelés
Az Android nem engedi futni a programot, ha hálózati kommunikáció van a fő szálban! Két megoldás: Runnable (Java) Leszármaztatunk a Runnable osztályból A .run metódust definiáljuk felül A szálat a .start() metódussal indítjuk nem a run()-nal! AsyncTask (Android) Leszármaztatunk az AsyncTask<Params,Progress,Resoult> osztályból A doInBackground(Params…) metódust felül kell definiálnunk hogy menjen Hamarosan lesz róla több szó…

11 Java példa Szál indítására
Thread t=new Thread(new Runnable() { public void run() while(true) System.out.printl(”Ezt addig írom ki, amíg le nem lösz!”) } }); t.start();

12 UI Thread blokkolása Nem szerencsés
User-t zavarja Rendszer kilőheti az appot (ANR) Hálózati kommunikáció nem megengedett Többféle megoldás Runnable – runOnUIThread AsyncTask

13 AsyncTask Automatikusan kezeli a szálváltást
Saját osztályt kell belőle származtatni Meg van a saját életciklusa doInBackground Háttérben fut OnPostExecute UI Thread-en fut

14 AsyncTask private class SendTask extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... texts) { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(SERVER_ADDRESS); try { List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("text", texts[0])); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = httpClient.execute(httpPost); } catch (Exception e) { e.printStackTrace(); } return null; Futtatás: new SendTask().execute(new String[] { param });

15 HTTP kommunikáció Androidon
HttpClient-en keresztűl HttpPost/HttpGet objektum használatával HttpClient execute metódusának meghívása

16 HttpPost HttpClient httpClient = new DefaultHttpClient();
try { List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("text", texts[0])); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = httpClient.execute(httpPost); } catch (Exception e) { e.printStackTrace(); }


Letölteni ppt "4. alkalom – Hálózat Kezelés"

Hasonló előadás


Google Hirdetések