Óbudai Egyetem Neumann János Informatikai Kar.NET Gadgeteer – Hálózati programozás.

Slides:



Advertisements
Hasonló előadás
4. alkalom – Hálózat Kezelés
Advertisements

A hálózat működése 1. A DHCP és az APIPA
Hálózati és Internet ismeretek
Programozás III HÁLÓZAT.
Virtuális méréstechnika Hálózati kommunikáció 1 Mingesz Róbert V
C++ programozási nyelv Gyakorlat hét
Programozás III OOP ALAPOK.
Hálózat összeállítási feladat 2
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Öröklődés 2..
Dinamikus tömbök.
OSI Modell.
Bevezetés a Java programozásba
Bevezetés a Java programozásba
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Mutatók, tömbök, függvények
A TCP/IP cím.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Java programozási nyelv 3. rész – Osztályok I.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
Hálózatkezelés, java.net Elek Tibor
C# tagfüggvények.
C# tagfüggvények.
Elektronikus levelezés
SOAP alapismeretek A SOAP egy egyszerű XML alapú protokoll, ami lehetővé teszi, hogy az alkalmazások információt cseréljenek a HTTP-én keresztül. Forrás:
Ez a dokumentum az Európai Unió pénzügyi támogatásával valósult meg. A dokumentum tartalmáért teljes mértékben Szegedi Tudományegyetem vállalja a felelősséget,
Hálózati Bombermen Belicza András Konzulens: Rajacsics Tamás BME-AAIT.
Delphi Készítette: Rummel Szabolcs Elérhetőség:
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Visual Basic 2008 Express Edition
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Miért is jók a rétegek?  Ha alkalmazást készítünk, nem akarunk IP csomagok küldésével bajlódni Ethernet keretekkel foglalkozni Implementálni megbízható.
Supervizor By Potter’s team SWENG 1Szarka Gábor & Tóth Gergely Béla.
HF MINTA 2012/2013. ősz. HF Minta  Objektum-orientált program  „Adatvezérelt” alkalmazás írása  Fájl kezelés (olvasás, írás)  Menü készítése  5-6.
Hálózat menedzsment Óravázlat Készítette: Toldi Miklós.
Illés Zoltán ELTE Informatikai Kar
Mérés és adatgyűjtés laboratóriumi gyakorlat Hálózati kommunikáció 1 Makan Gergely, Mingesz Róbert, Nagy Tamás V
Számítógépes grafika I. AUTOCAD alapok
Intelligens Mérnöki Rendszerek Laboratórium Alkalmazott Matematikai Intézet, Neumann János Informatikai Kar, Óbudai Egyetem Mielőtt a virtuális térbe lépnénk.
Grafikus programozás Készítette: Csernok László
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Informatikai gyakorlatok 11. évfolyam
Programozás III ÖTLETEK A FELADATMEGOLDÁSHOZ. A HF-EK APROPÓJÁN Néhány javaslat: 1. Jó lenne, ha a feladatmegoldás előtt átnéznék az előadás-anyagokat.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
IP címzés Gubó Gergely Konzulens: Piedl Péter Neumann János Számítástechnikai Szakközépiskola Cím: 1144 Budapest Kerepesi út 124.
Programozási nyelvek csoportosítása.
Hálózatos programok készítése
PHP függvények MySQL adatbázisok kezelésére
Neumann János Informatikai Kar
Informatikai gyakorlatok 11. évfolyam
Neumann János Informatikai Kar
a programegységek között
Neumann János Informatikai Kar
Neumann János Informatikai Kar
DirectoryEntry & DirectorySearcher
Neumann János Informatikai Kar
Beépített függvények használata programozáskor
Neumann János Informatikai Kar
Adatbáziskezelés.
Neumann János Informatikai Kar
Hálózatkezelés Java-ban
Neumann János Informatikai Kar
Thread és Task.
Folyamatok.
Algoritmus készítés.
Konverziós operátorok
Előadás másolata:

Óbudai Egyetem Neumann János Informatikai Kar.NET Gadgeteer – Hálózati programozás

Áttekintés 1.A Socket osztály 2.A Socket osztály használata 3.Egyszerű hálózati alkalmazás készítése 4.Felkészülést segítő kérdések 2

1. A Socket osztály A Socket osztályról röviden (1) A System.Net névtér osztályainak célja egyszerűsíteni a hálózati programozást Maga a Socket osztály a Socket API-t implementálja, melyet az as években specifikáltak A Socket egy kapcsolati végpontot reprezentál, biztosítva az adatok küldését és fogadását szerver és kliens oldalról is Az alkalmazások közti hálózati kapcsolat létrehozásához szükségünk van a szerver IP címére és egy előre definiált, egyezményes port számra A.NET Micro Framework Socket osztálya az eredeti.NET Framework-ben található implementáció csonkított változata (pl. az aszinkron adatcserét biztosító metódusok kimaradtak) 3

A Socket osztályról röviden (2) 1. A Socket osztály 4

2. A Socket osztály használata Inicializálás A Socket inicializálását a konstruktor segítségével lehet elvégezni a példányosítás során: Magyarázat: – AddressFamily.InterNetwork: a címfeloldás módszerét definiálja. Internet, illetve LAN esetén InterNetwork-öt kell megadni (IPv4 támogatás). – SocketType.Stream: kétirányú, összeköttetéses adatfolyam kapcsolat – ProtocolType.Tcp: A használni kívánt protokoll (jelen esetben TCP) Használat után mindig zárjuk le a Socket-et a Close metódussal, vagy használjunk using blokkot! 5

2. A Socket osztály használata Csatlakozás Magyarázat: – A Dns.GetHostEntry metódust használjuk a hoszt név/ip cím feloldásra, mely visszaad legalább egy IPAddress objektumot az AddressList tömb segítségével. Ha a paraméterben üres string-et adunk meg, akkor a lokális ip címet kapjuk vissza. – Az IpAddress objektum segítségével létrehozható egy IPEndPoint objektum, a port szám definiálásával. Ez már felhasználható a csatlakozás megkezdéséhez. – A Connect metódus hívásával lehet csatakozni a paraméterben megadott végponthoz 6

2. A Socket osztály használata Adatok küldése és fogadása (1) A küldés és fogadás során bájt tömböket kell használni Szöveges adatok küldése: Szöveges adatok fogadása: A fogadáshoz szükség van egy megfelelő méretű buffer-re. A Receive metódus visszatérési értékként megadja a fogadott bájtok számát. A Send és a Receive metódusok is blokkolnak, beépített aszinkron adatküldés nincs 7

2. A Socket osztály használata Adatok küldése és fogadása (2) Ha nem akarunk fix méretű tömböt alkalmazni a fogadásnál, akkor a Socket osztály Available tulajdonságát használhatjuk, mely megadja, hogy pillanatnyilag hány bájt van a buffer-ben Olvasás előtt lehetőség van a socket státuszát lekérdezni („polling”): Az első paraméterben megadható, hogy maximálisan mennyi időt hagyunk a válaszra (-1 = végtelen), a második paraméterben pedig azt a tulajdonságot adjuk meg, amelynek az állapotát le akarjuk kérdezni: 8

2. A Socket osztály használata Adatok küldése és fogadása (3) A szerver oldali socket létrehozása esetén meg kell adnunk, hogy mely kliensek csatlakozhatnak ahhoz, erre szolgál a Bind metódus: Egy IPEndPoint objektum átadásával megadható a fogadni kívánt kliens(ek) IP címe, illetve az a portszám, amin a szerver „figyelni” fog Amennyiben címnek IPAddress.Any-t adunk meg, bármely klienst fogadja a szerver a megadott porton 9

2. A Socket osztály használata Adatok küldése és fogadása (4) A Listen metódus hívását követően a socket „figyelni” fog a csatlakozni kívánó kliensekre (listen mode). Ez a metódus a háttérben, aszinkron módon fut. A Listen után meg kell hívni az Accept metódust, amely blokkolja a program futását (szinkron) egy kliens csatlakozásáig. Ennek backLog paraméterével szabályozható a kliensek maximális száma. A csatlakozást követően a metódus visszatér a klienst reprezentáló Socket objektummal: Ha több klienst szeretnénk kezelni, akkor az Accept többször is hívható 10

3. Egyszerű hálózati alkalmazás készítése Feladat Készítsünk egy egyszerű kliens és egy szerver alkalmazást a Socket osztály használatával! – A kliens küldjön szöveges adatot a várakozó szerver számára, melyet az grafikusan megjelenít – A kliens legyen egy asztali konzol alkalmazás – A szerver legyen egy Gadgeteer alkalmazás – Használjunk TCP/IP protokollt 11

3. Egyszerű hálózati alkalmazás készítése Kliens alkalmazás készítése (1) Hozzunk létre egy asztali konzol alkalmazást! 12

3. Egyszerű hálózati alkalmazás készítése Kliens alkalmazás készítése (2) A projekt létrehozását követően a következő programkeretet kapjuk: Az alkalmazást készítsük el úgy, hogy az Enter billentyű leütését követően a beírt üzenet azonnal elküldésre kerüljön a szerver számára, illetve további üzenetek bevitelére is legyen lehetőség! 13

3. Egyszerű hálózati alkalmazás készítése Kliens alkalmazás készítése (3) A csatlakozáshoz szükséges paraméterek két mezőben kerülnek tárolásra: Magyarázat: – Port: a port száma, melyen a szerver „figyeli” a csatlakozni kívánó klienseket – A hoszt (szerver) neve, vagy IP címe 14

3. Egyszerű hálózati alkalmazás készítése Kliens alkalmazás készítése (4) A program elkészítéséhez a Main metódust egészítsük ki az alábbi módon: Magyarázat: – A konzol osztály használatával beolvasásra kerül az elküldendő szöveg (Console.ReadLine). Ha a megadott szöveg üres, a program kilép 15

3. Egyszerű hálózati alkalmazás készítése Kliens alkalmazás készítése (5) Magyarázat: – A Socket inicializálása során az első paraméter (SocketType.Stream) definiálja a socket típusát, mely jelen esetben nyers adatfolyam, a második paraméter (ProtocolType.Tcp) pedig a használni kívánt protokollt (TCP) – A socket.Connect metódussal a kliens alkalmazás csatlakozik a szerverhez a Host és a Port paraméterek felhasználásával – Az elküldendő szöveget nyers adatként, byte tömbben kell elküldeni, ennek előállítását végzi az Encoding.ASCII.GetBytes metódus a bytes nevű tömbbe – A bytes tömb elküldését a szerverhez a socket.Send metódus hajtja végre – Az alkalmazás egy végtelen ciklusban fut, hogy többször is lehessen szöveget továbbítani 16

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (1) Hozzunk létre egy új Gadgeteer Application projektet! 17

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (2) A socket osztály a System.Net névtérben érhető el, mely a System.dll modulban található, ezért a Solution Explorer ablakban azt a referenciákhoz hozzá kell adni References/Add Reference menüpont segítségével: 18

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (3) Készítsük el az alábbi konfigurációt: 19

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (4) A program készítésének lépései: 1.Változók definiálása 2.Felhasználói felület inicializálása 3.Hálózati kapcsolat inicializálása 4.Szerver üzemmód indítása 5.Kliensek fogadása 6.Adatmegjelenítés 20

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (5) Változók definiálása: Magyarázat: 1.Port: A szerver által használt kommunikációs port 2.listeningSocket: a kiszolgáló socket-et reprezentáló példány 3.textAddress: szövegemegjelenítő vezérlő a szerver IP címének megjelenítéséhez 4.textReceivedMessage: a fogadott adat megjelenítését végző szövegmegjelenítő vezérlő 21

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (6) Felhasználói felület inicializálása: – A felhasználói felületen elhelyezésre kerül egy panel, valamint két szövegmegjelenítő vezérlő: 22

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (7) Hálózati kapcsolat inicializálása: – A hálózati modulhoz társítani kell egy IP címet, mely lehet dinamikus, DHCP szerver esetén (UseDHCP metódus), illetve lehet statikus (EnableStaticIP metódus). A Statikus cím beállításánál meg kell adni a használni kívánt IP címet, alhálózati maszkot és az átjáró IP címét – A NetworkUp esemény jelzi, ha a hálózati kapcsolat létrejött, a NetworkDown esemény pedig akkor következik be, ha megszűnik, vagy nincs hálózati kapcsolat. Mindkét eseménykezelőre feliratkozunk, az állapotot pedig kiírjuk. 23

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (8) Státusz információk megjelenítése: – A NetwokUp eseménykezelőjében a kijelzőn kiírásra kerül a társított IP cím, valamint meghívásra kerül a StartAcceptor metódus, melynek feladata a kapcsolódó kliensek figyelése – A NetworkDown esemény bekövetkezésekor szövegesen figyelmeztetésre kerül a felhasználó, hogy nincs hálózati kapcsolat 24

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (9) Szerver üzemmód indítása: – Ahhoz,hogy a kliensek csatlakozni tudjanak a szerverhez, figyelni kell a bejövő kapcsolatokat: 25

3.Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (10) Magyarázat: – Példányosításra kerül a szerver oldali socket a listeningSocket mező felhasználásával. Ez reprezentálja a szerver oldali socket-et, mely fogadja a bejövő kapcsolatokat – A Bind metódus segítségével társításra kerül az elfogadni kívánt végpont (IPAddress.Any: bármely végpont), valamint az a port, amelyen a szerver „figyelni” fog – A Listen metódus meghívásával a socket „figyelő” állapotba kerül, innentől lehetővé téve a kliensek csatlakozását. A paraméterben megadott szám meghatározza, hogy hány kliens állhat a várakozási sorba. – A kliensek figyelését és az adatfogadást külön szálon végzi az alkalmazás egy Accept nevű metódusban megvalósítva azt 26

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (10) Kliensek fogadása: 27

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (11) Magyarázat: – A paraméterben átadott socket objektum Accept metódusának meghívása esetén a hívó szál blokkolásra kerül mindaddig, még egy kliens nem csatlakozik a szerverhez (ezzel egy időben csak egy kliens tud csatlakozni, további kliensekhez további Accept hívások szükségesek). Csatlakozás esetén a metódus visszatérési értéke a csatlakozott klienshez társított socket. – A csatlakozást követően a visszatérési értékben kapott communicationSocket objektum segítségével először ellenőrizni kell, hogy van-e rendelkezésre álló adat a kliens felől a socket.Poll metódus hívásával – Ennek teljesülése esetén egy inBuffer nevű bájt tömbbe kerül az olvasható adat a Receive metódus meghívásával – A nyers bájt tömbből egy string kerül példányosításra a message nevű változóba a string osztály megfelelő konstruktorának segítségével, UTF8 karakterkódolást alkalmazva – Az adatfogadást követően a DisplayMessage metódus felhasználásával a szöveg megjelenítésre kerül a kijelzőn 28

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (12) Adatmegjelenítés – Az adatfogadást követően annak grafikus megjelenítése következik a DisplayMessage metódus implementálásával, ahol a paraméterben átadott szöveg kerül kiírásra a kijelzőn – Az adatfogadás nem az alkalmazás által használt főszálon történik, ezért a megjelenítési műveletek esetén a hívást nem lehet erről a szálról végezni – Mivel a grafikus vezérlők megjelenítéssel kapcsolatos tulajdonságait a főszál kontextusában kell módosítani, ezért a megjelenítő elem Dispatcher.BeginInvoke metódusát kell használni, mely a főszál kontextusából hívja a paraméterben megadott anonymous metódust 29

3. Egyszerű hálózati alkalmazás készítése Szerver alkalmazás készítése (13) A szöveges adat megjelenítése a főszál kontextusából: Magyarázat: – A textReceivedMessage szövegmegjelenítő Dispatcher objektumának BeginInvoke metódusával a vezérlő TextContent mezőjének értékadása a főszál kontextusában fog végrehajtódni: az első paraméter (args) egy delegált, mely meghívásra kerül, a második paraméter a végrehajtandó metódus bemeneti paramétere (message) – Az anonymous metódus törzsében a klienstől kapott üzenet kerül elhelyezésre a szövegmegjelenítő Textcontent mezőjnek értékadásával – A metódus végrehajtását követően nincs szükség visszatérési értékre, ezért az null 30

4. Felkészülést segítő kérdések Hasonlítsa össze a.NET MF és a.NET Framework Socket osztályait Hogy kell egy socket-et inicializálni? Hogy kell adatot küldeni, illetve adatot fogadni socket segítségével? Hogyan célszerű szerveroldali socket-et implementálni? 31