Android tanfolyam 4 alkalom Hlzat Kezels Alapok DNSIP
















- Slides: 16
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. 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 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 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
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); 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 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) { 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ó 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 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 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 metódusának meghívása
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(); }
















