Android tanfolyam 4 alkalom Hlzat Kezels Alapok DNSIP

  • Slides: 16
Download presentation
Android tanfolyam 4. alkalom – Hálózat Kezelés

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

Alapok – DNS/IP DNS • Hierechikus fa. • Hálózatba kötött gépekhez rendel szöveges azonosítót.

Alapok – DNS/IP DNS • Hierechikus fa. • Hálózatba kötött gépekhez rendel szöveges azonosítót. IP • IPv 4: 152. 66. 208. 63 • IPv 6: 2001: 738: 2001: 2078: 0: 208: 88: 0 • url: https: //trash. sch. bme. hu: 8080

Alapok – UDP 2/2 Tulajdonságai: • Port alapú (0 -65535) • Nincs garantált csomag

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 (You. Tube) • telnet • ICMP

Alapok – TCP 2/3 Tulajdonságai: • Port alapú (0 -65535) • Biztosítja a csomag

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

Alapok – TCP 3/3

Alapok – TCP 3/3

Java példa program (kliens) //kapcsolat felépítése: try { socket. Client = new Socket(ip, 8180);

Java példa program (kliens) //kapcsolat felépítése: try { socket. Client = new Socket(ip, 8180); sout = new Print. Writer(socket. Client. get. Output. Stream(), true); sin = new Buffered. Reader(new Input. Stream. Reader(socket. Client. get. Input. Stream())); } catch (Exception e) { // TODO: Exception Handling } //Üzenet küldése: sout. println(”Hello World!”); //Kapcsolat lezárása // TODO: Connection close.

Java példa program (szerver) //szerveren prot nyitás: try { server = new Server. Socket(8180);

Java példa program (szerver) //szerveren prot nyitás: try { server = new Server. Socket(8180); socket. Client = server. accept(); sout = new Print. Writer(socket. Client. get. Output. Stream(), true); sin = new Buffered. Reader(new Input. Stream. Reader(socket. Client. get. Input. Stream())); } catch (Exception e) { // TODO: Exception Handling } // Üzenet fogadása: s = sin. read. Line(); System. out. println(s); //Kapcsolat lezárása // TODO: Connection close.

Egy kis kitérés, szál kezelés Az Android nem engedi futni a programot, ha hálózati

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! • Async. Task (Android) – Leszármaztatunk az Async. Task<Params, Progress, Resoult> osztályból – A do. In. Background(Params…) metódust felül kell definiálnunk hogy menjen – Hamarosan lesz róla több szó…

Java példa Szál indítására Thread t=new Thread(new Runnable() { public void run() { while(true)

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();

UI Thread blokkolása Nem szerencsés User-t zavarja Rendszer kilőheti az appot (ANR) Hálózati kommunikáció

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 – run. On. UIThread Async. Task

Async. Task Automatikusan kezeli a szálváltást Saját osztályt kell belőle származtatni Meg van a

Async. Task Automatikusan kezeli a szálváltást Saját osztályt kell belőle származtatni Meg van a saját életciklusa do. In. Background Háttérben fut On. Post. Execute UI Thread-en fut

Async. Task private class Send. Task extends Async. Task<String, Void> { @Override protected Void

Async. Task private class Send. Task extends Async. Task<String, Void> { @Override protected Void do. In. Background(String. . . texts) { Http. Client http. Client = new Default. Http. Client(); Http. Post http. Post = new Http. Post(SERVER_ADDRESS ); try { List<Name. Value. Pair> params = new Array. List<Name. Value. Pair>(); params. add(new Basic. Name. Value. Pair("text", texts[0])); http. Post. set. Entity(new Url. Encoded. Form. Entity(params )); Http. Response response = http. Client. execute(http. Post); } catch (Exception e) { e. print. Stack. Trace(); } return null; } } Futtatás: new Send. Task(). execute(new String[] { param });

HTTP kommunikáció Androidon Http. Client-en keresztűl Http. Post/Http. Get objektum használatával Http. Client execute

HTTP kommunikáció Androidon Http. Client-en keresztűl Http. Post/Http. Get objektum használatával Http. Client execute metódusának meghívása

Http. Post Http. Client http. Client = new Default. Http. Client(); Http. Post http.

Http. Post Http. Client http. Client = new Default. Http. Client(); Http. Post http. Post = new Http. Post(SERVER_ADDRESS); try { List<Name. Value. Pair> params = new Array. List<Name. Value. Pair>(); params. add(new Basic. Name. Value. Pair("text", texts[0])); http. Post. set. Entity(new Url. Encoded. Form. Entity(params)); Http. Response response = http. Client. execute(http. Post); } catch (Exception e) { e. print. Stack. Trace(); }