(J\V]HU&NOLHQVV]HUYHUUHQGV]HUHN

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "(J\V]HU&NOLHQVV]HUYHUUHQGV]HUHN"

Átírás

1 (J\V]HU&NOLHQVV]HUYHUUHQGV]HUHN ALAPELVEK $]HORV]WRWWDONDOPD]iVRNHJ\LNFVRSRUWMiWDNpWUpWHJ&DONDOPD]iVRNDWNpSYLVHOLNDNOLHQV V]HUYHUUHQGV]HUHN,O\HQDONDOPD]iVRNNDOPiUIHOWpWHOH]KHWHQPLQGHQNLWDOiONR]RWWD]RQEDQ QHPIHOWpWOHQ OUHDOL]iOMDKRJ\DKDV]QiOWV]RIWYHULO\HQDODSRQP&N GLN$V]HUYHUNOLHQV UHQGV]HUHNUHiOWDOiQRVViJEDQMHOOHP]KRJ\D]HJ\LNDONDOPD]iVDV]HUYHUEL]RQ\RV V]ROJiOWDWiVRNDWYpJH]DNOLHQVNpUpVHLUHpVDNOLHQVIIHODGDWDH]HQNpUpVHNPHJIRJDOPD]iVD (összeállítása) és a kérdésre adott válaszok megjelenítése. Gondoljunk például az Internetes ZHEROGDODNUDDKRODNOLHQVV]iPtWJpSH]HQIXWDE QJpV]QNHJ\HJ\IiMOWNpUOHDQQDND] egész Internetes hálózaton egedi azonosítója, az URL, vag újabb szóhasználattal URI DODSMiQ(]WDIiMOWSRQWRVDEEDQDQQDN+70/Q\HOYHQNGROWIRUUiViWDPHJIHOHO ZHEV]HUYHUW ]HPHOWHWV]iPtWJpSIRJMDHON OGHQL%iUHJ\V]HU&V] YHJHVIiMOUOYDQV]H] D]RQEDQV]iPXQNUDV]LQWHpUWKHWHWOHQ$NOLHQVJpS QN QIXWE QJpV]SURJUDPYLV]RQW puwhoph]qlwxgmddngrndwpvdnpv]twmhv]iqgpndv]hulqwphjmhohqtwld]rogdow9dqqdnro\dq HVHWHNLVDKROQLQFVNGROiVLO\HQNRUDE QJpV]DNOLHQVLQWHOOLJHQFLiMiQP~OLNKRJ\ PHJKtYMDDPHJIHOHOROYDVSURJUDPRWSpOGiXO:RUGYDJ\PiVKDVRQO GRNXPHQWXPV]HUNHV]WpVPHJMHOHQtWVHDNpUWGRNXPHQWXPRW0LQGHQPiVHVHWEHQKDH]D] LQWHOOLJHQFLDQHPNHU OWEHpStWpVUHDE QJpV]DXWRPDWLNXVDQOHW OWpVUHNDSFVROpVD]85/ alapján azonosított fájl letöltését kínálja fel a kliensgépre. Innét már a felhasználó egéni G QWpVHKRJ\PLW UWpQLNDN YHWNH]NEHQDOHW OW WWiOORPiQQ\DOPLO\HQDONDOPD]iVW szoftvert használ az állomán megjelenítésére, megtekintésére.

2 0.1. ábra. Webszerver ábrája A fentebb vázolt felállás eg speciális kliens-szerver rendszer, ahol a rendszer két VV]HWHYMpQHNWHYpNHQ\VpJLN UHEiUNOLHQVEODNiUKiQ\OHKHWH]HNPLQGXJ\DQD]WNpSHVHN elvégezni - szigorúan meghatározott. Felmerül a logikus kérdés, vajon mire jó még ez az elosztott alkalmazás? Nilvánvaló, hog sok egéb célra is használható eg ilen elven IHOpStWHWWHORV]WRWWUHQGV]HUQp]] QNPHJHJ\NpWDYDOViJEDQLVOpWH]DONDOPD]iVW 3RQWRVLGV]HUYHU $],QWHUQHWHW ]HPHOWHWV]iPtWJpSHNHVHWpEHQUHQGNtY OIRQWRVKRJ\DJpSHNEHOVUiMD szinkronizálva legen és persze pontos is legen. Mindenki tudja, hog a karórákhoz képest a V]iPtWJpSHNEHOVUiLQDJ\RQSRQWDWODQRNWXGQDNOHQQLWHKiWDV]LQNURQL]iOiVFVDN~J\ YDOVtWKDWPHJKDHJ\JpSHWNLQHYH] QNLGV]HUYHUQHNpVUHQGV]HUUiMiWIRO\DPDWRVDQHJ\ N OVIRUUiVDODSMiQNRUULJiOMXNDW EELJpSSHGLJHJ\HJ\NOLHQVSURJUDPRWIXWWDWDPHO\ DGRWWYDJ\EHiOOtWRWWLGQNpQWOHNpUGH]LDSRQWRVLGWDV]HUYHUWO(J\LO\HQDONDOPD]iV QDJ\RQHJ\V]HU&OHKHWKLV]HQVHPPLPiVWQHPNHOOFVLQiOQLDNOLHQVQHNPLQWLGN ] QNpQWD szerverhez fordulni - ennek azonosítója persze beállítható, de akár önállóan meg is keresheti - pvhonpuqldsrqwrvlgwdpho\dodsmiqduhqgv]huehqohixwwdwhj\wlphv]hu&sdudqfvrwd

3 NDSRWWPHJIHOHOIRUPiUDKR]RWWLGDGDWWDO$SpOGiEOOiWKDWKRJ\DV]HUYHUpVDNOLHQV IHODGDWDOpQ\HJHVHQHOYiOLNHJ\PiVWODV]HUYHUPHJV]HU]LpVPHJIHOHOIRUPiEDKR]]DD kívánt adatot, míg a kliens ezt megkapva és paraméterként felhasználva eg operációs UHQGV]HUV]LQW&SDUDQFVRWDONDOPD]iVWIXWWDWOH.OLHQV LGRNRQYHU]LR6WULQJ7LPH LGREHDOOLWDV7LPHYRLG 3RQWRVLGR",GR6WULQJ 6]HUYHU LGROHNHUGH]HV6WULQJ 0.2iEUD3RQWRVLGV]HUYHUiEUiMD /HYHOH]V]HUYHU Feladatát mindenki ismeri a gakorlatból, ha lefuttatom a kliens alkalmazást, akkor a EHiOOtWRWWPDLOV]HUYHUD]RQRVtWSpOGiXOPDLOV]DPDONKXDODSMiQEL]RQ\RVHOOHQU]pVHNHW HOYpJH]YHD]RQRVtWMHOV]OHNpULDPHJIHOHOOHYHOH]OiGiEODEHpUNH]HWWOHYHOHNHWpV D]RNDWEHiOOtWiVWOI JJHQNLLVW U OWHWLDV]HUYHUUO Közös elemek A fenti két példa alapján már meg is fogalmazhatjuk, hog melek a közös elemei eg kliens- V]HUYHUUHQGV]HU&HORV]WRWWDONDOPD]iVQDN í azonosítani kell a szervert a hálózaton - erre a célra szolgál az URL - és ezt az azonosítót a kliens gépen futó alkalmazásnak tudnia kell, nélküle nem képes megtalálni a szervert; í kell eg közös kódrendszer, üzenet szerkezet, amel alapján a két számítógép megérti HJ\PiVWDOHJHJ\V]HU&EEHVHWEHQH]HJ\V]DEiO\RVV]HUNH]HW&NDUDNWHUVRUR]DWOHKHW í mind a szerver, mind a kliens oldali alkalmazásban olan elemek (objektumok) legenek, amelek a kapcsolódást és az üzenetváltást el tudják látni - pl. Socket osztál a Java nelvben. í PLYHO D V]HUYHU IRO\DPDWRVDQ ILJ\HO D EHpUNH] ]HQHWHNUH OHJHJ\V]HU&EE PHJYDOVtWiVD HJ\ YpJWHOHQ FLNOXV DPHO\EONLOpSpVFVDN D V]HUYHUW OHiOOtW VSHFLiOLV utasításra van;

4 Azonosítás, üzenetfogadás Az URL - Uniform Resource Locator 1 - vag az újabban használt URI - Uniform Resource Identifier 2 - tökéletesen egedi mutatót biztosít a teljes Interneten eg meghatározott HUIRUUiVKR]UHVRXUFH(]D]HUIRUUiVOHKHWHJ\V]HU&PLQWSpOGiXOHJ\IiMOYDJ\HJ\PDSSD de hivatkozhat eg bonolultabb objektumra is, mint például eg adatbázis lekérés vag eg NHUHVPRWRU(QQHNHOpUpVpUHDV]iPtWJpS,3FtPHV]ROJiODPLDQpYV]HUYHUHNEHQWiUROW LQIRUPiFLNDODSMiQHJ\pUWHOP&HQPHJIHOHOWHWKHWD]HJ\HVGRPpQQHYHNQHNWRYiEEiD doménon belül - ez általában eg könvtárnak felel meg az azonosított számítógépen - az HJ\HVDOPDSSiNpVYpJ ODIiMORNHJ\HGLQHYpEONpSH]] ND]85,W A névszerver vag domain névszerver (DNS) feladata, hog az adott hálózati szegmensen összekapcsolja a nevekkel jellemzett doméneket és a számítógépet azonosító IP címet. Kérésre - ismét eg szerver! - megmondja, hog a NHUHVHWWQHY&GRPpQPHO\LNJpSHQDQQDNPHO\LNN Q\YWiUiWONLLQGXOYDWDOiOKDWPHJ2UV]iJRQNpQWKLHUDUFKLNXV felépítésben helezkednek el a névszerverek, uganakkor bárki telepíthet névszervert a saját gépére. Természetesen D],QWHUQHWHVIRUJDORPFtPIHOROGiViWYpJ]QpYV]HUYHUHNLVPHULNHJ\PiVWpVDKiO]DWRQHJ\PiVVDONRPPXQLNiOYD képesek végül a fizikai címet megadni. Eg számítógép több szervert is futtathat, bizonos határok között akárhán szervert, ameleket egmástól a port (azaz kapu) különböztet meg. A port azonosító biztosítja, hog az ]HQHWDPHJIHOHOV]HUYHUKH]MXVVRQHODV]iPtWJpSHQ$V]iPtWJpSHVV]DNQ\HOYEHQ démonnak nevezik azokat az alkalmazásokat, amelek eg-eg porton figelve fogadják a EHpUNH]NpUpVHNHW ]HQHWHNHW(]pUWD]HJ\HVV]HUYHUROGDOLDONDOPD]iVRNNDSFVRODWWDUW részét is démonnak nevezzük. Ha beletekintünk valamel alkalmazás bin vag lib N Q\YWiUiEDpVRWWGUHYpJ]GSURJUDPIiMOWWDOiOXQNDNNRUQDJ\YDOV]tQ&VpJJHO PHJWDOiOWXNDNDSFVRODWWDUWiVpUWIHOHOVHOHPHWSpOGiXOP\VTOGD0\64/DGDWEi]LVNH]HO kapcsolattartó démonja és httpd a http kéréseket fogadó webszerver (Apache) démonja. $PLQW H]W IHOWpWHOH]KHWHQ PiU WDSDV]WDODWEO WXGMD D],3 FtP WHWV]pV V]HULQW EHiOOtWKDW $ V]iPtWJpSHN PHJN O QE ]WHWKHWVpJpWDIL]LNDLV]LQWHQDKiO]DWLNiUW\iQDNDJ\iUWN iowdo JDUDQWiOW HJ\HGL D]RQRVtWV]iPD (hardware address vag rövidítve HW Address) biztosítja. Íg például a 00:0C:76:94:A9:0E hexadecimális számmal D]RQRVtWRWWKiO]DWLNiUW\DD],QWHUQHWHQD,3FtPPHOUHQGHONH]V]iPtWJpSEHQWDOiOKDWDMHJ\]HW tuiviqdnlgsrqwmiedq(eeod]iootwiveod]lvn YHWNH]LNSHUV]HKRJ\DKiO]DWLNiUW\DJ\iUWNVHKROH]HQD) OG Q QHPJ\iUWKDWQDNNpWD]RQRV+:$GGUHVVpUWpNNHOUHQGHONH]DONDWUpV]WpVSHUV]HIRO\DPDWRVDQNRPPXQLNiOQLXN NHOO PHJHJ\H]YH HJ\PiV N ] WW D IHOKDV]QiODQG D]RQRVtWV]iPRN WDUWRPiQ\DLUO%YHQ YDQ WDUWDOpN PHUW D hexadecimális elrendezés miatt darab, azaz kereken milliárd egedi hálózati kárta gártható le. Vessük össze ezt a Föld jelenlegi lakosságával, ami ma 6 milliárd ember! $],3FtPSHUV]H FVDNDNNRUW OWLEHIHODGDWiWKDYDOEDQHJ\HGLpVNLWXGMXNV]&UQLD]HPEHULWpYHGpVWWHKiW OHKHWOHJQHDV]iPtWJpSNH]HOMHiOOtWJDVVD$FpOD]KRJ\HJ\HJ\V]ROJiOWDWLDOKiO]DWRQEHO OJpSLPHJROGiVVDO biztosítsuk az egediséget. Ezt a szerepet töltik be a DHCP alapú rendszerek, ahol a kiosztást a DHCP szerver végzi és tartja nilván, ez a szoftvereszköz tartja nilván a már kiosztott címeket és ezek fizikai azonosításához feljegzi a kérdéses gép hardvercímét is a saját adatbázisában

5 GYAKORLATI MEGVALÓSÍTÁS A Java nelvet és annak fejlesztési elveit, alkalmazási területeit ismerve biztosak lehetünk DEEDQKRJ\NOLHQVV]HUYHUDONDOPD]iVRNDWPiUVRNDQNpV]tWHWWHNpVH]pUWIHOWpWHOH]KHWHQ vannak már kész eszközök eg ilen típusú alkalmazás megvalósításához. Vizsgáljuk meg WHKiWHOV] ULVKRJ\D-DYDQ\HOYPLO\HQHV]N ] NHWNtQiOIHOV]iPXQNUDPLO\HQNpV] osztálokból tudjuk összeépíteni a kívánt rendszert. A Java dokumentáció tartalmazza az alábbi ábrát is, és ennek alapján már elindíthatjuk a keresésünket ábra. Java 2 platform (J2SE v. 1.4) csomagszerkezete A Java SDK úgnevezett Core API csomagjai között találjuk a Networkig csomagot, azon belül a java.net csomagot és ennek osztálai biztosítják számunkra az összes eszközt alkalmazásunk felépítésére. Vizsgáljuk meg a számunkra legfontosabb három osztál IHOpStWpVpWP&N GpVpW SERVERSOCKET OSZTÁLY Csomag: java.net Deklaráció: public class ServerSocket. ]YHWOHQVjava.lang.Object

6 A ServerSocket osztál példána szerver oldali kapcsolóelemet, kapcsolódási pontot 3 (socket) KR]OpWUH$NDSFVROGiVLSRQWDKiO]DWRQiWpUNH]NpUpVHNUHYiUpVDNpUpVDODSMiQEL]RQ\RV WHYpNHQ\VpJHNHWYpJH]PDMGOHKHWVpJHWEL]WRVtWDUUDKRJ\DYiODV]YLVV]DNHU OM QDNpUGpVW IHOWHYK ])RQWRVPHJMHJ\H]QLKRJ\DV]HUYHUROGDOLNDSFVROGiVLSRQWPXQNiMiW ténlegesen a SocketImpl osztál eg példána végzi. Eg alkalmazásban megváltoztathatjuk a kapcsolóelemet létrehozó programrészletet (factor) - amel a példánosítást végzi - ol PGRQKRJ\DKHO\LW&]IDOQDNPHJIHOHONRQILJXUiFLM~NDSFVROHOHPHNHWKR]]RQOpWUH 0H]N private boolean created private boolean bound private boolean closed private SocketImpl impl $]HOVKiURPPH]DNDSFVROHOHPiOODSRWiWWiUROMDD]D]OpWUHKR]iVWSRUWKR]N WGpVW pvoh]iuivwptjdqhj\hglnph]dwpq\ohjhvwhypnhq\vpjhwypj]socketimpl típusú objektum referenciája. Konstruktorok ServerSocket() ServerSocket(int port) ServerSocket(int port, int backlog) ServerSocket(int port, int backlog, InetAddress bindaddr) $QpJ\NRQVWUXNWRUDQpJ\ N O QE ]OpWUHKR]KDWREMHNWXPpUWIHOHO$]HOVHVHWEHQ HJ\N WGpVpVPLQGHQIpOHHJ\pEPHJN WpVQpON OLREMHNWXPRWKR]XQNOpWUHDPiVRGLN esetben már megadjuk, hog melik port-hoz kapcsolódik az objektum, a backlog változó beállítja a felsorakoztatható üzenetek, kérések számát (az objektum addig fogad új kérést, míg ezt a beállított számot el nem éri, ez alapértelmezetten 50 kérés), és a bindaddryiowr]ydoqhypqhnpvwtsxviqdnphjihohohqd]wd],3ftphwdgkdwmxnphj DPHO\FtPHQV]iPtWJpSHQDV]HUYHUNDSFVROHOHPHOpUKHW7HUPpV]HWHVHQD],3FtP megadható a doménnévvel is, a címfeloldást a területileg illetékes DNS szerver végzi majd. Fontosabb metódusok $KRJ\HUUOPiUNRUiEEDQV]YROWDWpQ\OHJHVPXQNiWDSocketImpl osztál példána végzi. ËJ\DPHWGXVRNHJ\UpV]HHQQHNOpWUHKR]iViWDN O QE ]KHO\]HWHNEHQV] NVpJHV módosításokat hivatott intézni. A ServerSocket objektum használata során az esetek 3 A socket szó valójában - nagon jó képi megközelítéssel - eg foglalatot, aljzatot jelent, mint amelet az elektromos kapcsolatok létrehozásánál használunk. Minteg "összedugjuk" a klienst és a szervert az aljzaton keresztül.

7 többségében az accept() metódus meghívásával eg Socket objektumot hozunk létre és a további tevékenséget már ez végzi. void createimpl() throws SocketException Hibakezeléssel kiegészítve, a setimpl() metóduson keresztül létrehozza a Socket objektumot. private void setimpl() Amenniben az alkalmazás speciális kapcsolóelemek létrehozását igénli, a factor objektum segítségével ezen a metóduson keresztül beállíthatjuk a kapcsolóelem tulajdonságait. SocketImpl getimpl() throws SocketException A SocketImpl osztál kódját hozzákapcsolja ehhez a kapcsolóelemhez, amenniben ez még nem létezik, létre is hozza a SocketImpl objektumot. public Socket accept() throws IOException $PHWGXVD]DGRWWNDSFVROHOHPKH]W UWpQNDSFVROGiVWILJ\HOLpVDPHQQ\LEHQLO\HQ történik, azt elfogadja. A kapcsolódásig a metódus blokkol. Létrehoz eg új általános kapcsolóelem objektumot (Socket socket) és amenniben a rendszerben van biztonsági menedzser (SecuritManager), annak checkaccept() metódusát hívja meg a frissiben létrehozott objektum socket.getinetaddress().gethostaddress() kódjával és a socket.getport() NGMiYDO PLQW SDUDPpWHUHNNHO KRJ\ HOOHQUL]]H YDMRQ D P&YHOHW HQJHGpO\H]HWWH $PHQQ\LEHQ QHP EL]WRQViJL NLYpWHO NHOHWNH]LN pv D P&YHOHWHWQHPKDMWMDYpJUH 0iV NLYpWHOHN LV NHOHWNH]KHWQHN D] HOOHQU]pV VRUiQ DPHO\HN IHOVRUROiViWO LWW PRVW eltekintünk. 4 public InetAddress getinetaddress() Visszaadja az aktuális szerver kapcsolóelem lokális címét, azaz azt a címet, amelhez a NDSFVROHOHP N WGLN $PHQQ\LEHQ D NDSFVROHOHP QHP N WGLN VHKRYD VHP D visszaadott érték null. public String tostring() Visszaadja a kapcsolóelem létrehozásához megadott címet és portszámot string formájában. public void close() throws IOException Lezárja a kapcsolatot. Amenniben a kapcsolathoz kommunikációs csatorna is hozzá van rendelve, azt is lezárja. 4$-DYDGRNXPHQWiFLMDYDGRFVYDJ\HJ\V]HU&HQGRFVOHW OWKHWD OWpVpVNLFVRPDJROiVXWiQDNpUGpVHV információ (feltéve, hog a teljes anagot eg javadocs mappába tömörítettük ki közvetlenül a C meghajtón) a C:\javadocs\api\java\net\ServerSocket.html fájlban lesznek megtalálhatók. A java.net csomag a teljes GRNXPHQWiFLQHWZRUNLQJEORNNMiEDQOHOKHWIHO

8 SOCKET OSZTÁLY Csomag: java.net Deklaráció: public class Socket. ]YHWOHQVjava.lang.Object A SocketRV]WiO\NOLHQVNDSFVROHOHPHNHWKR]OpWUHH]HNHWHJ\V]HU&HQFVDN kapcsolóelemeknek is hívhatjuk. Mind a kimenet, mind a bemenet szabálozására képes, azaz HJ\V]HU&NpWLUiQ\~IRUJDOPDWYDOVtWPHJ$NDSFVROHOHPOpQ\HJpEHQHJ\HJ\ kommunikációs végpont két számítógép között, de amenniben a kliens-szerver rendszer XJ\DQD]RQV]iPtWJpSHQNHU OPHJYDOVtWiVUDDP&N GpV NWRYiEEUDLVKiO]DWRVDODSRQ meg, mintha a két gép közötti link kábel nulla hosszúságú lenne. A kapcsolóelem munkáját valójában a SocketImpl osztál példána látja el, a ServerSocket esetében már megismert módon. Ezért itt is igaz, hog eg alkalmazásban megváltoztathatjuk a kapcsolóelemet létrehozó programrészletet (factor) - amel a példánosítást végzi - ol módon, hog a KHO\LW&]IDOQDNPHJIHOHONRQILJXUiFLM~NDSFVROHOHPHNHWKR]]RQOpWUH 0H]N private boolean created private boolean bound private boolean connected private boolean closed private boolean shutin private boolean shutout SocketImpl impl $]HOVKDWPH]DNDSFVROHOHPiOODSRWiWWiUROMDD]D]OpWUHKR]iVWSRUWKR]N WGpVWpV NDSFVRODWIHQQiOOiViW OH]iUiVW PtJ D] XWROV PH] D WpQ\OHJHV WHYpNHQ\VpJHW YpJ] SocketImpl típusú objektum referenciája. A shutin és shutout logikai változók az input és az output állapotának jelzésére szolgálnak, amenniben értékük true ezek már OH]iUWQDNWHNLQWKHWN Konstruktorok A konstruktorok nagmértékben hasonlítanak a ServerSocket osztálnál már megismertekre, KLV]HQDIXQNFLNLVMHOHQWVPpUWpNEHQKDVRQON,WWPRVWFVDNDIRQWRVDEEDNDWVRUROMXNIHO public Socket() $UHQGV]HUDODSpUWHOPH]pVpQHNPHJIHOHOSocketImpl típus alapján kapcsolódás nélküli kapcsolóelemet hoz létre. public Socket(String host, int port) throws UnknownHostException, IOException Létrehoz eg folam (stream) kapcsolóelemet és a megadott számmal azonosított porthoz kapcsolja a megnevezett gazdagépen. Amenniben az alkalmazás

9 meghatározott eg server socket factor-t, akkor annak createsocketimpl() metódusát hívja meg az aktuális kapcsolóelem példán létrehozásához, egébként HJ\V]HU&NDSFVROHOHPHWKR]OpWUH$EL]WRQViJLHOHPHNHWXJ\DQ~J\YHV]LILJ\HOHPEH mint a ServerSocket osztál esetében. public Socket(InetAddress address, int port) throws IOException Létrehoz eg folam (stream) kapcsolóelemet és a megadott számmal azonosított porthoz kapcsolja a megadott IP címen. public Socket(String host, int port, InetAddress localaddr, int localport) throws IOException Létrehoz eg kapcsolóelemet és a megadott távoli gazdagéphez kapcsolja a megadott távoli porton keresztül. A kapcsolóelem uganakkor kapcsolatot hoz létre a megadott heli címhez és porthoz. public Socket(String host, int port, boolean stream) throws IOException Létrehoz eg folam (stream) kapcsolóelemet és a megadott számmal azonosított porthoz rendeli a megnevezett gazdagépen. Amenniben a stream paraméter true értéket kap, a létrehozott kapcsolóelem folam típusú, ha azonban ennek értéke false, eg datagram típusú kapcsolóelem jön létre. Felmerülhet a kérdés, mi a különbség a két kommunikációs mód között, melik a jobb. Mint anni más esetben, természetesen itt sincs abszolút igazság, attól függ, hog mit akarunk csinálni. Míg a datagram egszeri adatcsomag, DIRO\DPVWUHDPNDSFVRODWKR]IHQQNHOOWDUWDQLDNDSFVRODWRW KX]DPRVDEE LGHLJ(EEO N YHWNH]LN KRJ\ U YLG ]HQHWHNHVHWpQDIRO\DPWtSXV~NDSFVRODWIHOpStWpVHpVOHERQWiVDVRNNDOW EELGWYHKHWHOPLQWD] ]HQHWWRYiEEtWiV PDJDtJ\QHPJD]GDViJRV$PiVLNV]iPtWiVEDYHHQGWpQ\YLV]RQWDIRO\DPWtSXV~NDSFVRODWPHJEt]KDWViJD Metódusok - kapcsolatot létrehozó metódusok A Socket létrehozásának menete lénegében megegezik a ServerSocketnél leírtakkal, íg V]iPRVEHiOOtWpVOHNpUGH]PHWGXVLVPHJIHOHOD]RWWPHJLVPHUWQHN$]DOiEELDNEDQFVDN QpKiQ\IRQWRVDEEHOWpUPHWGXVWLVPHUWHW QN public void connect(socketaddress endpoint, int timeout) $ OpWUHM WW NDSFVROHOHPHW D V]HUYHUKH] NDSFVROMD D PHJDGRWW LGN V] E puwpnnho $PHQQ\LEHQLWW]pUpUWpNHWDGXQNPHJH]PHJKDWiUR]DWODQLGN V] E WMHOHQWD]D]D kapcsolat blokkol, míg létre nem jön vag hiba keletkezik. public void bind(socketaddress bindpoint) A kapcsolóelemet heli címhez köti. Metódusok - információt szolgáltató és beállító metódusok Ezek segítségével kapunk információt a heli és a kapcsolódáshoz felhasznált távoli IP FtPUODSRUWD]RQRVtWV]iPUOpVDEHiOOtWPHWGXVRNiOOtWMiNDSocketREMHNWXPPH]LWLV 0&N GpV NUpV]OHWHLWD6RFNHWMDYDRV]WiO\IRUUiVNGMiEDQWDQXOPiQ\R]KDWMXNH]DOHW OW WW JDK kibontása után, annak könvtárában, az src.zip állománban található meg. Az

10 RV]WiO\KLHUDUFKLiQDNPHJIHOHOHQH]HQEHO OLVDMDYDPDSSDQHWN Q\YWiUiEDQWDOiOMXND csomag forrásfájljait. public InputStream getinputstream() public OutputStream getoutputstream() (]DNpWPHWGXVDGHNODUiFLMXNQDNPHJIHOHOHQDV]iPXQNUDOHJIRQWRVDEEDGDWRNDWD NLpVEHPHQNDUDNWHUVRUR]DWRWDGMDYLVV]D,WWWDOiOMXNPHJYDOMiEDQD] ]HQHWHWpVD] arra küldött választ is. 0HWGXVRNDSXIIHUWiOOtWpVOHNpUGH]PHWGXVRN public snchronized void setsendbuffersize(int size) public snchronized int getsendbuffersize() public snchronized void setreceivebuffersize(int size) public snchronized int getreceivebuffersize() Mindkét beállító metódus esetében a SocketOptions interfész konstansait állítjuk be a SocketImpl osztálon keresztül. A fogadó puffer esetében a SO_RCVBUF D NLPHQ puffer esetében a SO_SNDBUF értékét állítjuk. )HODGDW +R]]XQN OpWUH HJ\ QDJ\RQ HJ\V]HU& 6HUYHU6RFNHW SpOGiQ\W pv tudvvxn NL D] DNWXiOLV SDUDPpWHUHLW(KKH]D]RQEDQPHJNHOOtUQLD]WPHJV]OtWNOLHQVROGDOL6RFNHWSpOGiQ\NGMiWLV mert a szerver csak a kapcsolat létrejöttekor, annak elfogadásakor hozza létre a kommunikációt biztosító saját Socket példánát. Fordítsuk le mindkét forráskódot és a két programot egmástól I JJHWOHQ ON O QYLUWXiOLVJpSSHOIXWWDVVXN(OVQHNDV]HUYHUWNHOOHOLQGtWDQLXWiQDDNOLHQVW )RUGtWiV$IRUUiVNGRWSDUDQFVVRURVIHO OHWUOLVIRUGtWKDWMXNHKKH]V] NVpJHVKRJ\D FRPSLOHUMDYDFH[HHOpUKHWOHJ\HQD'26SDWKEOD]D]DSDWKYiOWR]EDQOHJ\HQEHQQHD]D könvtár, amelben a program megtalálható. Jelen esetben ez a c:\j2sdk1.4.2\bin könvtár. Ebben az esetben bárhonnan indíthatjuk a javac.exe-t, de természetesen teljes elérési utat kell megadni a forrásfájlhoz. A lefordított class állomán megtalálható lesz uganabban a könvtárban. A futtatás parancs kiadása már eg kicsit bonolultabb. A java.exe uganis alapértelmezetten csak eg paramétert (a futtatandó osztál nevét) és nem állománt vár, de persze az osztált WDUWDOPD]IiMON Q\YWiUiWLVPHJNHOODGQXQN(EEOSHUV]HD]LVN YHWNH]LNKRJ\HJ\ N Q\YWiUEDQQHPOHKHWNpWD]RQRVQHY&RV]WiO\PHUWDMDYDH[HQHPWXGN O QEVpJHWWHQQL közöttük. ËJ\DSDUDQFVKHO\HVPHJDGiVDDN YHWNH] java -cp könvtárnév osztálnév Ez ebben az esetben a java -cp c:\javaprog\medzi AlapServer parancs lesz. Forráskód AlapServer.java import java.io.*; import java.net.*; class AlapServer {

11 public static void main(string[] args) { Sstem.out.println("AlapServer elindult"); tr { // a szerver objektumok létrehozása, kapcsolat elfogadás ServerSocket ss = new ServerSocket(8008); Socket in = ss.accept(); // kapcsolat adatai Sstem.out.println("IP cim: " + in.getinetaddress()); Sstem.out.println("port szama: " + in.getlocalport()); Sstem.out.println("input stream: " + in.getinputstream()); Sstem.out.println("output stream: " + in.getoutputstream()); Sstem.out.println("send buffer: " + in.getsendbuffersize()); Sstem.out.println("receive buffer: " + in.getreceivebuffersize()); catch (Exception e) { Sstem.out.println("Hiba: " + e); Sstem.out.println("AlapServer leallt"); Forráskód AlapKliens.java import java.io.*; import java.net.*; class AlapKliens { public static void main(string[] args) { tr { String host; // paraméterként is lehessen gazdagépet megnevezni if (args.length > 0 && args[0]!= null) { host = args[0]; else { host = "localhost"; // a kapcsolóelem létrehozása Socket t = new Socket(host, 8008); catch (Exception e) { Sstem.out.println("Hiba: " + e); A futás eredméne SOCKETIMPL OSZTÁLY Csomag: java.net

12 Deklaráció: public abstract class SocketImpl implements SocketOptions. ]YHWOHQVjava.lang.Object Fontosabb implementált interfészek: SocketOptions Ez az interfész szolgáltatja a Socket adatokat, mint például timeout és más egebek. A SocketImpl absztrakt osztál a közös szuperosztála mindazon osztáloknak, amelek ténlegesen létrehozzák a kapcsolóelemeket. Ez használhatjuk mind a kliens, mind a szerver oldali kapcsolóelemek létrehozására. Eg "sima" kapcsolóelem ezeket a metódusokat pontosan úg valósítja meg, ahog azok OHtUiVUDNHU OWHNpVQHPNtVpUOLPHJKRJ\W&]IDORQYDJ\SUR[LV]HUYHUHQSUEiOMRQPHJ áthatolni. 0H]N protected FileDescriptor fd protected InetAddress address protected int port protected int localport /iwkdw KRJ\ D PH]N D]RNDW D] DGDWRNDW WDUWDOPD]]iN DPHO\HNUH D NDSFVROHOHPHNQHNV] NVpJ NYDQDP&N GpV NN ]EHQD]D]D],3 FtPDKHO\LpVD távoli gép port azonosítója. Ehhez hozzájön még a FileDescriptor osztál példána, amel azonosító a pufferbe írt, állománként kezelt karaktersorozatok mutatójaként szolgál. Konstruktorok: Konstruktora nincs, hiszen absztrakt osztál. Metódusok void setsocket(socket soc) void setserversocket(serversocket soc) Ez a két metódus állítja be, hog a SocketImpl milen típusú legen, szerver, vag NOLHQVROGDOLNDSFVROHOHPNpQWP&N GM Q Természetesen a SocketImpl tartalmazza mindazon általános metódusokat, ameleket akár a ServerSocket, akár a SocketREMHNWXPRNP&N GpVHNRUPHJKtYXQNKLV]HQDWpQ\OHJHV munkát ez az osztál végzi. Ezeket itt most nem is soroljuk fel az ismétlés elkerülésére. Javasoljuk azonban a SocketImpl.java fájl tanulmánozását, mert a megjegzésekkel, PDJ\DUi]DWRNNDOEVpJHVHQHOOiWRWWIRUUiVNGEOPLQGHQPHJpUWKHW

13 KLIENS-SZERVER ALKALMAZÁS Kis keresgélés után eg Java nelvet oktató kolléga 5 weboldalairól töltöttük le az alábbi két kis példaprogramot. Ez a program -legalább is ötletszinten - uganakkor megtalálható a Core Java könvben is 6. Eg-két helen átírva a logikáját és persze az összes üzenetét, ezen WDQXOPiQ\R]KDWMXND]DONDOPD]iVP&N GpVpW)LJ\HOM QNDUUDKRJ\HORV]WRWWDONDOPD]iV esetén a kliens és a szerver program önálló, azaz biztosítani kell a külön-külön futtatás OHKHWVpJpWN O QIiMON O QPDLQPHWGXVD]D]N O QYLUWXiOLVJpSGHDNpWSURJUDP asszimetrikusan összetartozik. Az asszimetria itt azt jelenti, hog a szerver elindítható a kliens QpON OH]DWHUPpV]HWHVIXWiVDGHDNOLHQVSURJUDPP&N GpVHV]HUYHUQpON OpUWHOPHWOHQ$ PHJIHOHOHQPHJtUWNOLHQVHOV] UDV]HUYHUWSUEiOMDHOpUQLDPHQQ\LEHQH]QHPVLNHU O hibajelzést fog adni. $NpWHUHGHWLIRUUiVIiMOWPHJMHJ\]pVHNNHOOiWWXNHOKRJ\HJ\V]HU&HQpUWHOPH]KHWOHJ\HQ Szerverprogram - EchoServer.java //a szükséges csomagok import java.io.*; import java.net.*; class EchoServer { public static void main(string[] args) { Sstem.out.println("EchoServer elindult"); tr { //szerver kapcsolóelem objektum, amel a megadott porton figel ServerSocket s = new ServerSocket(8008); /* elfogadja a kapcsolatot a kliens kérésére és általános kapcsolóelemet hoz létre */ Socket incoming = s.accept(); Sstem.out.println("létrejött a kapcsolat a " + incoming.getinetaddress() +" IP számú gazdagéphez a " + incoming.getlocalport()+ " portszámon."); //az íráshoz-olvasáshoz szükséges objektumok BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(incoming.getOutputStream())); //a kiíró objektumot fel is használjuk eg barátságos üdvözlésre out.println("hahó! Itt a Java EchoServer. 5 Xiaoping Jia, School of Computer Science, Telecommunications, and Information Sstems, De Paul Universit, Chicago, USA 6 Ca S. Horstmann, Gar Cornell Core Java (5. kiadás) 2. kötet 203. oldal

14 Kilépéshez BYE utasítás kell."); out.flush(); // végtelen ciklus, amel a szervert futtatja leállításig for (;;) { 6WULQJVWU LQUHDG/LQHEHROYDVVXNDEHM YIRO\DPRW if (str == null) { break; // ha nem jött semmi, nem csinálunk semmit else { /*az out objektum a kliensnek küldi vissza a paramétert, ez a kliens ablakában jelenik meg */ out.println("ezt küldte a kliens: " + str); out.flush(); //ürítjük a puffert, ha nem tesszük, nincs kiíratás! Sstem.out.println("Ezt kapta a szerver: " + str); if (str.trim().equals("bye")) //leállító utasítás break; incoming.close(); // lezárjuk a socket objektumot catch (Exception e) { KDYDODPLQHPVLNHU OWPHJIHOHOKLED ]HQHWHWN OG QN Sstem.out.println("Hiba: " + e); // Értesítést küldünk Sstem.out.println("EchoServer leállt."); Kliensprogram EchoClient.java import java.io.*; import java.net.*; class EchoClient { public static void main(string[] args) { tr { String host; /* a kliensnek paraméterként átadhatom a gazdagép nevét, alapértelmezetten ez a localhost */ if (args.length > 0 && args[0]!= null) { host = args[0]; else { host = "localhost"; // általános célú kapcsolóelem objektum, gazdanévvel és portszámmal Socket s = new Socket(host, 8008); // olvasó-író objektumok BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); // legen tíz üzenet for (int i = 1; i <= 10; i++) { Sstem.out.println("Átküldve: " + i + ". sor"); // a ténlegesen kiküldött sor, ezt látja a szerver out.println(i + ". sor ");

15 // puffer ürítés out.flush(); /* lezárjuk eg üzenettel a szervert, a szerver kódjába beleégetve a lezárást biztosító string */ out.println("bye"); out.flush(); /* ez a végtelen ciklus figeli a socket objektumra punh] ]HQHWHNHWPRVWDV]HUYHUUOpUNH]NHW for (;;) { String str = in.readline(); if (str == null) { break; else { // kiírjuk, ami beérkezett Sstem.out.println(str); catch (Exception e) { /* ha például nem meg a szerver, nincs kapcsolódás és itt kapunk hibaüzenetet, mint például: Hiba: java.net.connectexception: Connection refused: connect */ Sstem.out.println("Hiba: " + e); )HODGDW )RUGtWVXN OH D NpW IRUUiVIiMOW pv IXWWDVVXN (OV] U WHUPpV]HWHVHQ D V]HUYHUSURJUDPRW LQGtWMXN XWiQD D NOLHQVW 9L]VJiOMXN PHJ KRJ\ D NLPHQHWHQ PHJMHOHQ ]HQHWHN KRQQDQ származnak, melik jön közvetlenül a programból eg-eg Sstem.out.println() utasításra, és melek jönnek az in és out kommunikációs objektumokból. A futás eredméne Feladat: Alakítsuk át a kliens-szerver alkalmazást, hog a kliens a konzolról beírt üzeneteket küldje HODV]HUYHUQHND]YLV]RQWDGMDYLVV]DH]HNHWPGRVtWYDSpOGiXOQDJ\EHW&VIRUPiEDQ$OHiOOtWiV WRYiEEUDLVPHJHJ\H]pVV]HULQWD%<( ]HQHWOHJ\HQGHEiUPLO\HQNLVpVQDJ\EHW&VIRUPiEDQ megadható legen. Ne csak a szerver álljon le a be üzenetre, hanem a kliens program futása is IHMH]GM QEH Forráskód AllCapServer.java import java.io.*; import java.net.*; class AllCapServer { public static void main(string[] args) { Sstem.out.println("AllCapServer elindult"); tr { // a szerver objektumok létrehozása, kapcsolat elfogadás ServerSocket s = new ServerSocket(8008); Socket incoming = s.accept(); // kapcsolat adatai Sstem.out.println("Kapcsolat a " + incoming.getinetaddress() +

16 " IP cimen " + incoming.getlocalport() + " portszamon"); // olvasó - író objektumok BufferedReader in = new BufferedReader(new InputStreamReader(incoming.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(incoming.getOutputStream())); // tájékoztató üzenet out.println("a kapott uzeneteket nagbetusre alakitjuk. Leallas be uzenetre."); out.flush(); while (true) { // a beolvasó objektumból kivesszük az üzenetet String str = in.readline(); if (str == null) { break; else { /* az üzeneteket kiírjuk és utána átalakítjuk tjpuhw QNQHNPHJIHOHOHQ Sstem.out.println("Kapott uzenet: " + str); str = str.touppercase(); VWYLVV]DLVN OGM NEL]RQ\tWpNNpQW out.println("visszakuldve: " + str); out.flush(); KDPHJIHOHO ]HQHWHWNDSXQN, kilépünk a végtelen ciklusból... if (str.trim().equals("bye")) break; //és leállítjuk a szervert incoming.close(); catch (Exception e) { Sstem.out.println("Hiba: " + e); Sstem.out.println("AllCapServer leallt"); Forráskód AktivKliens.java import java.io.*; import java.net.*; class AktivKliens { private static String bemenet; // beolvasó függvén AE extra csomagja alapján private static String beolvas() { BufferedReader be = new BufferedReader(new InputStreamReader(Sstem.in)); String bestring = ""; tr { bestring = be.readline(); catch (IOException e) { Sstem.out.println("Hiba: " + e);

17 return bestring; public static void main(string[] args) { tr { String host; // paraméterként is lehessen gazdagépet megnevezni if (args.length > 0 && args[0]!= null) { host = args[0]; else { host = "localhost"; // a kapcsolóelem létrehozása Socket t = new Socket(host, 8008); // az olvasó - iró objektumok BufferedReader in = new BufferedReader(new InputStreamReader(t.getInputStream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(t.getOutputStream())); do { // beolvasunk a standard inputról, most DOS ablakból bemenet = beolvas(); // ezt olvastuk be és ki is írjuk Sstem.out.println("Elkuldott uzenet: " + bemenet); // most viszont átküldjük a szerverre out.println(bemenet); //itt küldi el out.flush(); // itt fogadjuk a szerver out objektuma által küldött üzeneteket String str = in.readline(); // és kiírjuk a standard kimenetre Sstem.out.println(str); // amig be üzenetet nem küldünk, erre a szerver és mi is leállunk while (!bemenet.trim().touppercase().equals("bye")); catch (Exception e) { Sstem.out.println("Hiba: " + e); A futás eredméne Tg%%./,(16(*<,'(-%.(=(/e6( +DHJ\6RFNHWDODSRQP&N GV]HUYHUDPHO\PHJDGRWWSRUWKR]NDSFVROGLN~MDEE SpOGiQ\iWDNDUMXNHOLQGtWDQLDNNRUpUWKHWHQKLED ]HQHWHWNDSXQNKLV]HQD]DGRWWSRUWRWHJ\ PiUIXWDONDOPD]iVIRJODOMDHOeUGHNHVSUREOpPDKRJ\PLW UWpQLNDNNRUKDHJ\P&N G V]HUYHUKH]W EENOLHQVVHODNDUXQNNDSFVRODWRWWHUHPWHQL,WWVHPHJ\V]HU&DIHODGDWKLV]HQD

18 Socket alapú kommunikáció lénege a folamatosan fenntartott kapcsolat, és ebben az HVHWEHQHJ\~MNOLHQVSURJUDPPHJ]DYDUQiDNRPPXQLNiFLW$]YLV]RQWHJ\V]HU&HQEHOiWKDW hog szálak alkalmazásával 7 egmástól független kapcsolatok hozhatók létre és ezzel már meg is oldottuk - elvben - a problémát. Ehhez persze a szervert kell átalakítani, hiszen csak a V]HUYHUWXGDW EEHJ\LGHM&NDSFVROGiVLNpUHOHPUOD]HJ\HVNOLHQVSpOGiQ\RNQHP tudhatnak egmásról. Az alábbi példaprogram olan szervert valósít meg, amel szálakon keresztül több klienst is NpSHVHJ\LGHM&OHJNH]HOQL$7KUHDGRV]WiO\EO U NtWHWW.OLHQV.H]HORRV]WiO\WKR]XQNOpWUH amelnek konstruktora eg Socket típusú objektumot vesz át és egetlen metódusa az DODSpUWHOPH]HWWUXQHOMiUiV(]D]HOMiUiVOpQ\HJpEHQDNRUiEEDQPiUPHJLVPHUWHJ\V]HU& szerver teljes kódját tartalmazza, íg eg teljes szerverpéldánnak felel meg. A kapcsolódási kérés beérkezésekor, az accept() metódus lefutásával létrejön a szál objektum és annak start() metódusa hívja meg a run() metódust. A korábban alkalmazott szerver leállításról most természetesen szó sem lehet, hiszen kliens oldalon nem tudhatunk arról, hog a többi kliens mit csinál éppen. A szál viszont leállítható és az aktív szálak számát a run() metóduson belül elhelezett activecount() függvén adja vissza. Forráskód MultiAllCapServer.java import java.io.*; import java.net.*; class KliensKezelo extends Thread { protected Socket incoming; public KliensKezelo(Socket incoming) { this.incoming = incoming; public void run() { tr { // olvasó - író objektumok BufferedReader in = new BufferedReader(new InputStreamReader(incoming. getinputstream())); PrintWriter out = new PrintWriter(new OutputStreamWriter(incoming. getoutputstream())); // tájékoztató üzenet out.println( "A kapott uzeneteket nagbetusre alakitjuk. Szal leall be 7 Angster Erzsébet Objektumorientált tervezés és programozás 2. kötet xxx. oldal

19 uzenetre."); out.flush(); while (true) { // a beolvasó objektumból kivesszük az üzenetet String str = in.readline(); if (str == null) { break; else { /* az üzeneteket kiírjuk és utána átalakítjuk tjpuhw QNQHNPHJIHOHOHQ // megszámoljuk a futó szálakat is... Sstem.out.println("Jelenleg " + this.activecount() + " aktiv szal fut"); Sstem.out.println("Kapott uzenet: " + str); str = str.touppercase(); VWYLVV]DLVN OGM NEL]RQ\tWpNNpQW out.println("visszakuldve: " + str); out.flush(); KDPHJIHOHO ]HQHWHWNDSXQNNLOpS QNDYpJWHOHQFLNOXVEO if (str.trim().equals("bye")) break; //és leállítjuk a szerver szálat incoming.close(); catch (Exception e) { Sstem.out.println("Hiba: " + e); public class MultiAllCapServer { public static void main(string[] args) { Sstem.out.println("MultiAllCapServer elindult."); tr { ServerSocket s = new ServerSocket(8008); //a szerver szálakat futtató végtelen ciklus while (true) { //áll a ciklus, amíg nem jön kapcs. kérés Socket incoming = s.accept(); new KliensKezelo(incoming).start(); catch (Exception e) { Sstem.out.println("Hiba: " + e); Sstem.out.println("MultiAllCapServer leallt.");

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL

Ja J v a a v a há h l á óz ó a z t a i al a ka k l a maz ma á z s á o s k o Socket, URL Java hálózati alkalmazások Socket, URL Protokollok java.net: socket, URL (Uniform Resource Locators) Protokoll: számítógépek közötti kommunikáció szabályai Internet TCP/IP (Transport Control Protocol/Internet

Részletesebben

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE

URL-LEL ADOTT OBJEKTUM LETÖLTÉSE (1) URL-LEL ADOTT OBJEKTUM LETÖLTÉSE Programozás III HÁLÓZATKEZELÉS A hálózatkezeléshez használatos java csomag: java. net Hol találkoztunk már vele? Pl.: URL cim = this.getclass().getresource("/zene/valami_zene.wav"); De pl. adott URL-ről

Részletesebben

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN Objektum Orientált Programozás 11. Kivételkezelés 44/1B IT MAN B IT v: 2016.05.03 MAN Pici elmélet A Java kivételkezelésének célja a programfutás során keletkezett hibák kiszűrése és megfelelő kezelése.

Részletesebben

OOP: Java 8.Gy: Abstract osztályok, interfészek

OOP: Java 8.Gy: Abstract osztályok, interfészek OOP: Java 8.Gy: Abstract osztályok, interfészek 26/1 B ITv: MAN 2019.04.03 Abszrakt metódus és absztrakt osztály. Gyakran előfordul a tervezés során, hogy egy osztály szintjén tudjuk, hogy valamilyen metódus

Részletesebben

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL )

CREATE TABLE student ( id int NOT NULL GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name varchar(100) NOT NULL, address varchar(100) NOT NULL ) Célok: a Java DB adatbázis-kezelő rendszer használatának ismertetése, adatbázisok használata Java alkalmazásokban - kétrétegű architektúra, egyszerű kliens-szerver architektúra használata hálózati alkalmazásokhoz.

Részletesebben

Az új be- és kimenet könyvtár

Az új be- és kimenet könyvtár Az új be- és kimenet könyvtár import java.io.ioexception; import java.io.fileinputstream; import java.io.fileoutputstream; import java.nio.channels.filechannel; import java.nio.bytebuffer; class Masol

Részletesebben

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20

Hálózatkezelés. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés / 20 Hálózatkezelés Tóth Zsolt Miskolci Egyetem 2013 Tóth Zsolt (Miskolci Egyetem) Hálózatkezelés 2013 1 / 20 Tartalomjegyzék 1 Hálózati Alapismeretek 2 System.Net Namespace 3 Socket Kezelés 4 Példa Tóth Zsolt

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2010/2011-2 félév, 11. gyakorlat (az előző 2 gyak közül az egyiken ZH volt, a másik szünet miatt elmaradt) 1 JAR fájl készítés A JAR (Java

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 12. gyakorlat 1 Távoli metódushívás Java-ban (RMI) Java-ban a távoli metódushívás ( Remote Method Invocation, RMI) egy

Részletesebben

Java Programozás 11. Ea: MVC modell

Java Programozás 11. Ea: MVC modell Java Programozás 11. Ea: MVC modell 20/1 B ITv: MAN 2018.03.02 MVC Model-View-Controller A modell-nézet-vezérlő a szoftvertervezésben használatos szerkezeti minta. Az MVC célja elválasztani az üzleti logikát

Részletesebben

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o Miért Java? széleskörben elterjedt Micro Edition - beágyazott rendszerek, régi telefonok Standard Edition - PC, android ezen alapul Enterprise Edition - vállalati programok, web service-ek multiplatform

Részletesebben

Java Programozás 1. Gy: Java alapok. Ismétlés ++

Java Programozás 1. Gy: Java alapok. Ismétlés ++ Java Programozás 1. Gy: Java alapok Ismétlés ++ 24/1 B ITv: MAN 2018.02.18 Feladat Készítsünk egy komplett konzolos alkalmazást, mely generál egy számot 0 és 100 között (mindkét határt beleértve), feladatunk

Részletesebben

Java programozási nyelv 10. rész Input/output kezelés

Java programozási nyelv 10. rész Input/output kezelés Java programozási nyelv 10. rész Input/output kezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/28 Tartalomjegyzék

Részletesebben

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni? A "java Villa -v" parancs jelentése: A java interpreter elindítja a Villa osztály statikus main metódusát, és átadja neki paraméterként a "-v" stringet. A java interpreter elindítja először a Villa osztály

Részletesebben

Programozási nyelvek II.: JAVA

Programozási nyelvek II.: JAVA Programozási nyelvek II.: JAVA 5. gyakorlat 2017. október 9-13. 5. gyakorlat Programozási nyelvek II.: JAVA 1 / 34 Az 5. gyakorlat tematikája Kivételkezelés alapjai Be és kimenet BufferedReader, Scanner

Részletesebben

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu

Széchenyi István Egyetem. Programozás III. Varjasi Norbert varjasin@sze.hu Programozás III. Varjasi Norbert varjasin@sze.hu 1 A java virtuális gép (JVM) Képzeletbei, ideális számítógép. Szoftveresen megvalósított működési környezet. (az op. rendszer egy folyamata). Feladata:

Részletesebben

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés Kivételek kezelése (exception handling) Hibakezelés old style class Szamolo { void szamol( String s, int i ) { int d; if (i!= 0) d = (i+1)/i; else if (s!= null) d = s.length(); else if (i > 10) // applikációs

Részletesebben

Abstract osztályok és interface-ek. 7-dik gyakorlat

Abstract osztályok és interface-ek. 7-dik gyakorlat Abstract osztályok és interface-ek 7-dik gyakorlat Abstract metódusok és osztályok Az OO fejlesztés során olyan osztályokat is kialakíthatunk, melyeket csak továbbfejlesztésre, származtatásra lehet használni,

Részletesebben

TCP/IP kapcsolat Java nyelven

TCP/IP kapcsolat Java nyelven Java programozási nyelv 2007-2008/ősz 5. óra TCP/IP kapcsolat Java nyelven Java streamek, szűrők, java.io TCP/IP alapú kommunikáció Egyszerű protokoll tervezése legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu

Részletesebben

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Függvények, csomagok Csomagok Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges számú osztályt tartalmazhat Pl.: java.util.scanner Könyvtárhierarhiát fed: Pl.: java/util/scanner.java Célja:

Részletesebben

Informatika terméktervezőknek

Informatika terméktervezőknek Informatika terméktervezőknek C# alapok Névterület (namespace) using Osztály (class) és Obejtumok Metódus (function, procedure, method) main() static void string[] arg Szintaxis // /* */ \n \t Névadások

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 13. előadás Throwable Error Exception RuntimeException IOException Saját (általában) Nem ellenörzött kivételek (Unchecked

Részletesebben

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*;

Pelda öröklődésre: import java.io.*; import java.text.*; import java.util.*; import extra.*; Java osztály készítése, adattagok, és metódusok, láthatóság, konstruktor, destruktor. Objektum létrehozása, használata, öröklés. ( Előfeltétel 12. Tétel ) Az osztály egy olyan típus leíró struktúra, amely

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html A mai előadás tartalma: Miért pont Java?

Részletesebben

Programozási nyelvek Java

Programozási nyelvek Java Programozási nyelvek Java 9. gyakorlat Fájlkezelés A fájlkezelés Java-ban különböző osztályok összekapcsolásával történik. Minden egyes osztály valamilyen minimális szolgáltatást tesz hozzá a többihez.

Részletesebben

7. K: JAVA alapok Konzultáció

7. K: JAVA alapok Konzultáció Objektum Orientált Programozás 7. K: JAVA alapok Konzultáció 35/1B IT MAN B IT v: 2017.05.03 MAN Hiba, biztonságos program 01. Szintaktikai hiba imt i = 0; system.out.println( alma ); for (int i = 0, i

Részletesebben

3. Osztályok II. Programozás II

3. Osztályok II. Programozás II 3. Osztályok II. Programozás II Bevezető feladat Írj egy Nevsor osztályt, amely legfeljebb adott mennyiségű nevet képes eltárolni. A maximálisan tárolható nevek számát a konstruktorban adjuk meg. Az osztályt

Részletesebben

18. előadás ÁLLANDÓ KÖLTSÉGEK ÉS A KÖLTSÉGGÖRBÉK

18. előadás ÁLLANDÓ KÖLTSÉGEK ÉS A KÖLTSÉGGÖRBÉK 18. előadás ÁLLANDÓ KÖLTSÉGEK ÉS A KÖLTSÉGGÖRBÉK Kertesi Gábor Világi Balázs Varian 21. fejezete átdolgozva 18.1 Bevezető A vállalati technológiák sajátosságainak vizsgálatát eg igen fontos elemzési eszköz,

Részletesebben

Java gyakorlat feladatai e s megolda sai (2014.04.10)

Java gyakorlat feladatai e s megolda sai (2014.04.10) Java gyakorlat feladatai e s megolda sai (2014.04.10) 1. Feladat Számítsuk ki a Fibonacci sorozat első 20 tagját! / Fibonacci számsorozat tagjait kiszámoló, egyetlen osztályból álló program @author Bence

Részletesebben

Szoftvertechnolo gia gyakorlat

Szoftvertechnolo gia gyakorlat Szoftvertechnolo gia gyakorlat Dr. Johanyák Zsolt Csaba http://johanyak.hu 1. Dependency Injection (függőség befecskendezés) tervezési minta A tervezési minta alapgondolata az, hogy egy konkrét feladatot

Részletesebben

BME MOGI Gépészeti informatika 8.

BME MOGI Gépészeti informatika 8. BME MOGI Gépészeti informatika 8. 1. feladat Készítse beosztottak és vezetők munkahelyi adatait kezelő alkalmazást! A feladat megoldásához hozza létre a következő osztályokat! Beosztott osztály: adatmező

Részletesebben

és az instanceof operátor

és az instanceof operátor Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek

OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN. vizsgatételek OBJEKTUM ORIENTÁLT PROGRAMOZÁS JAVA NYELVEN vizsgatételek 1. Az objektumorientált programozás szemlélete, az objektum fogalma 2. Az objektumorientált programozás alapelvei 3. A Java nyelv története, alapvető

Részletesebben

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor

Java Programozás 4. Gy: Java GUI. Tipper, MVC kalkulátor Java Programozás 4. Gy: Java GUI Tipper, MVC kalkulátor 15/1 B ITv: MAN 2018.03.10 1. Feladat: Tipper Készítsük el a tippelős programunk grafikus változatát. Az üzleti logika kódja megvan, a felület pedig

Részletesebben

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán Java VIII. Az interfacei és az instanceof operátor Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 10. 24. Java VIII.: Interface JAVA8 / 1 Az interfészről általában

Részletesebben

Java programozási nyelv 6. rész Java a gyakorlatban

Java programozási nyelv 6. rész Java a gyakorlatban Java programozási nyelv 6. rész Java a gyakorlatban Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. október A Java programozási nyelv Soós Sándor 1/16 Tartalomjegyzék

Részletesebben

BME MOGI Gépészeti informatika 4.

BME MOGI Gépészeti informatika 4. BME MOGI Gépészeti informatika 4. 1. feladat önálló feladatmegoldás Generáljon két 1 és 10 közötti véletlen egész számot, majd kiírja ezekre a számokra a tízes szorzótáblákat! Ha az első generált szám

Részletesebben

Segédanyag: Java alkalmazások gyakorlat

Segédanyag: Java alkalmazások gyakorlat Segédanyag: Java alkalmazások gyakorlat Készítette: Szabó Attila 2009/2010-2 félév, 2. gyakorlat 1 Osztályok és objektumok default, public, protected, private láthatóság a metódusokra és adattagokra (első

Részletesebben

Concurrency in Swing

Concurrency in Swing Concurrency in Swing A szálkezelés a swing alkalmazásokban is fontos. Cél egy olyan felhasználói felület készítése, amely soha nem fagy, mindig válaszol a felhasználói interakciókra, bármit is csináljon

Részletesebben

Szoftvertechnológia alapjai Java előadások

Szoftvertechnológia alapjai Java előadások Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz e-mail: fandrew@mit.bme.hu tárgy honlap: http://home.mit.bme.hu/~fandrew/szofttech_hu.html 1 Kivételkezelés I. szokatlan, váratlan

Részletesebben

Java programozási nyelv 4. rész Osztályok II.

Java programozási nyelv 4. rész Osztályok II. Java programozási nyelv 4. rész Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/17 Tartalomjegyzék

Részletesebben

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport 10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)

Részletesebben

Számítógépes Hálózatok GY 3-4.hét

Számítógépes Hálózatok GY 3-4.hét Számítógépes Hálózatok GY 3-4.hét Laki Sándor ELTE-Ericsson Kommunikációs Hálózatok Laboratórium ELTE IK - Információs Rendszerek Tanszék lakis@elte.hu http://lakis.web.elte.hu 1 Teszt canvas.elte.hu Kód:

Részletesebben

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció

Se S r e ial a iza z t a ion o n (in n Ja J v a a v ) a Szerializáció Serialization (in Java) Szerializáció Java Serialization API Standard eljárás az objektumok állapotának adatfolyamba történő kiírására (elmentésére egy bájtszekvenciába), és visszatöltésére Perzisztencia

Részletesebben

OOP: Java 8.Gy: Gyakorlás

OOP: Java 8.Gy: Gyakorlás OOP: Java 8.Gy: Gyakorlás 43/1 B ITv: MAN 2019.04.10 43/2 Egy régebbi beszámoló anyaga 1. Feladat: Készítsen egy Szemely nevű osztályt a szokásos konvenciók betartásával, amely tárolja egy ember nevét

Részletesebben

Kommunikáció Androidon Mobilinternet Wifi

Kommunikáció Androidon Mobilinternet Wifi OE-NIK 2012. március 24. Sicz-Mesziár János sicz-mesziar.janos@ nik.uni-obuda.hu Kommunikáció Androidon Mobilinternet Wifi Kommunikációs eszközök Androidon Wi-Fi Ma már minimum: a / b / g szabványok, újabbakon

Részletesebben

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben

Az emelt szintű. informatika érettségi. programozási feladatainak. megoldása Java nyelven. NetBeans IDE 8.1 környezetben Az emelt szintű informatika érettségi programozási feladatainak megoldása Java nyelven NetBeans IDE 8.1 környezetben Klement András 2016 Utolsó módosítás: 2016. május 25. Tartalomjegyzék Tartalomjegyzék

Részletesebben

A WEB programozása - JSP1 dr.gál Tibor. 2010. őszi félév

A WEB programozása - JSP1 dr.gál Tibor. 2010. őszi félév Általános jellemzők JavaServer Pages (JSP) Java utasításokat helyezetünk el a HTML lapon Ezket a Java utasításokat a kiszolgáló végrehajtja Az ügyfél felé generált tartalom: statikus HTML kód + Java utasítások

Részletesebben

JAVA PROGRAMOZÁS 3.ELŐADÁS

JAVA PROGRAMOZÁS 3.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 3.ELŐADÁS 2014-2015 tavasz Polimorfizmus, absztrakt osztályok, interfészek 2 Példa - Hengerprogram 3 Példa - Hengerprogram 4 Példa - Hengerprogram

Részletesebben

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat Programozási nyelvek II. JAVA EA+GY 1. gyakolat EÖTVÖS LORÁND TUDOMÁNYEGYTEM INFORMATIKAI KAR PROGRAMOZÁSI NYELVEK ÉS FORDÍTÓPROGRAMOK TANSZÉK 2017/2018. őszi félév Tartalom 1 Amit tudni kell a félévről

Részletesebben

Java és web programozás

Java és web programozás Budapesti Műszaki Egyetem 2015. 04. 08. 9. Előadás Kivétel kezelés a kivétel (exception) egy esemény, mely futás közben megbontja a program normális futási folyamatát például kivétel dobódik amikor 0-val

Részletesebben

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread

Vé V g é r g e r h e a h j a tá t s á i s s z s ál á ak a Runnable, Thread Végrehajtási szálak Runnable, Thread Végrehajtási szálak Java-ban A Java program az operációs rendszer egy folyamatán (process) belül fut. A folyamat adat és kód szegmensekből áll, amelyek egy virtuális

Részletesebben

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész

Java Programozás 6. Gy: Java alapok. Adatkezelő 2.rész Java Programozás 6. Gy: Java alapok Adatkezelő 2.rész 25/1 B ITv: MAN 2018.04.13 A feladat Feladat: folytassuk a panel életre keltését! - Alakítsuk ki a Lista panelt - Betöltéskor olvassuk be az adatokat

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 25. 3. El adás User public class User { private String realname_; private String nickname_; private String password_; public User(String realname, String nickname)

Részletesebben

JNDI - alapok. Java Naming and Directory Interface

JNDI - alapok. Java Naming and Directory Interface JNDI - alapok Java Naming and Directory Interface Naming Service Naming service: nevek hozzárendelése objektumokhoz, elérési lehetőség (objektumok/szolgáltatások lokalizálása), információk központosított

Részletesebben

Web-technológia PHP-vel

Web-technológia PHP-vel Web-technológia PHP-vel A PHP programnyelv 2, futtatókörnyezet beálĺıtások Erős Bence February 26, 2013 Erős Bence () Web-technológia PHP-vel February 26, 2013 1 / 19 Szuperglobális változók $ GET : request

Részletesebben

Java I. A Java programozási nyelv

Java I. A Java programozási nyelv Java I. A Java programozási nyelv története,, alapvető jellemzői Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2007. 02. 12. Java I.: Történet, jellemzők, JDK JAVA1 / 1 Egy kis történelem

Részletesebben

Java programozási nyelv

Java programozási nyelv Szoftvertechnológia sáv Java programozási nyelv Dirk Louis-Peter Müller: Java (Belépés az internet világába) Panem kiadó, Budapest, 2002. Webvilág sorozat Készítette: Gregorics Tibor Vázlatos áttekintés

Részletesebben

Programozási nyelvek és módszerek Java Thread-ek

Programozási nyelvek és módszerek Java Thread-ek Programozási nyelvek és módszerek Java Thread-ek Laki Sándor lakis@inf.elte.hu 2006. május 3. 0-0 Szálak (Threads) Ahhoz, hogy egy mai rendszer m ködhessen több 10-100 folyamatnak kell futnia. A folyamatok

Részletesebben

Java programozási nyelv 9. rész Kivételkezelés

Java programozási nyelv 9. rész Kivételkezelés Java programozási nyelv 9. rész Kivételkezelés Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2005. szeptember A Java programozási nyelv Soós Sándor 1/24 Tartalomjegyzék

Részletesebben

A Java nyelv IV. rész - appletek, hálózati alkalmazások fejlesztése

A Java nyelv IV. rész - appletek, hálózati alkalmazások fejlesztése A Java nyelv IV. rész - appletek, hálózati alkalmazások fejlesztése A Java magasfokú objektumorientáltsága következtében egy Java program osztályok és objektumok összefüggő halmazát jelenti. A program

Részletesebben

Programozás I. Első ZH segédlet

Programozás I. Első ZH segédlet Programozás I. Első ZH segédlet Ezen az oldalon: kiírás az alapértelmezett (hiba) kimenetre, sztring konkatenáció, primitív típusok, osztály létrehozás, példányosítás, adattagok, metódusok Kiíratás alapértelmezett

Részletesebben

Java és web programozás

Java és web programozás Budapesti M szaki Egyetem 2013. szeptember 11. Jó hír Jó hír Java lesz! Tárgyismertet Elérhet ségek: Kovács Kristóf: kkovacs@math.bme.hu Rimay Zoé: zrimay@math.bme.hu, Követelmények: Év végi beadandó (facebook):

Részletesebben

Konkurens TCP Szerver

Konkurens TCP Szerver A gyakorlat célja: Konkurens TCP Szerver Megismerkedni a párhuzamos programozás és a konkurens TCP szerver készítésének az elméleti és gyakorlati alapjaival és egy egyidejűleg több klienst is kiszolgáló

Részletesebben

Programozás II. ATM példa Dr. Iványi Péter

Programozás II. ATM példa Dr. Iványi Péter Programozás II. ATM példa Dr. Iványi Péter 1 ATM gép ATM=Automated Teller Machine Pénzkiadó automata Kezelő szoftvert szeretnénk írni Objektum-orientált módon 2 Követelmények Egyszerre csak egy embert

Részletesebben

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN

Objektum Orientált Programozás. 5. JAVA osztályok 21/1B IT MAN Objektum Orientált Programozás 5. JAVA osztályok 21/1B IT MAN B IT v: 2016.03.09 MAN Feladatok 1. Készítsen egy Alkalmazott osztályt - legyen név, kor és fizetés adata - legyen egy osztályszintű adattagja

Részletesebben

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani. Vizuális programozás 1. A gyakorlat célja A gyakorlat célja a Könyvtár alkalmazás folytatása az előző gyakorlaton elkészített grafikus felület felhasználásával. Elsőként lemásoljuk az előző gyakorlat eredményeként

Részletesebben

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész

Java Programozás 9. Gy: Java alapok. Adatkezelő 5.rész Java Programozás 9. Gy: Java alapok Adatkezelő 5.rész 15/1 B ITv: MAN 2018.04.22 A Keresés funkció Programlogika: 1. A keresés az etm táblamodellben fog keresni, és a találat rekordokat átmásolja egy másik

Részletesebben

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben

Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben Adatbázis alapú rendszerek gyakorlat Adatbázis alapú alkalmazásfejlesztés Java, C# környezetben Java GUI készítése, Oracle kapcsolódás JDBC-vel A jelen anyagban egy egyszerűsített megközelítéssel vizsgáljuk

Részletesebben

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07.

Java VI. Egy kis kitérő: az UML. Osztály diagram. Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI. Öröklődés Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2006. 03. 07. Java VI.: Öröklődés JAVA6 / 1 Egy kis kitérő: az UML UML: Unified Modelling Language Grafikus eszköz objektum

Részletesebben

INFORMATIKAI ALAPISMERETEK

INFORMATIKAI ALAPISMERETEK Informatikai alapismeretek középszint 1021 ÉRETTSÉGI VIZSGA 2011. május 13. INFORMATIKAI ALAPISMERETEK KÖZÉPSZINTŰ ÍRÁSBELI ÉRETTSÉGI VIZSGA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ NEMZETI ERŐFORRÁS MINISZTÉRIUM

Részletesebben

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa!

Tartalomjegyzék. Általános Információ! 2. Felhasználói dokumentáció! 3. Feladat! 3. Környezet! 3. Használat! 3. Bemenet! 3. Példa! Tartalomjegyzék Általános Információ! 2 Felhasználói dokumentáció! 3 Feladat! 3 Környezet! 3 Használat! 3 Bemenet! 3 Példa! 3 A program eredménye! 3 Példa! 3 Hibalehetőségek! 3 Példa! 3 Fejlesztői dokumentáció!

Részletesebben

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN OOP: Java 11.Gy: Enumok, beágyazott osztályok 13/1 B ITv: MAN 2019.04.24 ArrayList Rugalmas tömb A tömbök korlátai Fix méret, nem lehet menet közben megnövelni Ha túl nagyra választjuk, fölösleges helyfoglalás

Részletesebben

JAVA PROGRAMOZÁS 8.ELŐADÁS

JAVA PROGRAMOZÁS 8.ELŐADÁS Dr. Pál László, Sapientia EMTE, Csíkszereda JAVA PROGRAMOZÁS 8.ELŐADÁS 2014-2015 tavasz Véletlen elérésű állományok; JDBC 2 Véletlen elérésű állományok A RandomAccessFile osztály 3 Közvetlen hozzáférésű

Részletesebben

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Programozás I. 3. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar Programozás I. 3. gyakorlat Szegedi Tudományegyetem Természettudományi és Informatikai Kar Antal Gábor 1 Primitív típusok Típus neve Érték Alap érték Foglalt tár Intervallum byte Előjeles egész 0 8 bit

Részletesebben

Java hálózatkezelés II. szerver-kliens kapcsolat szálkezelés JAVA PROGRAMOZÁS 10. GYAKORLAT

Java hálózatkezelés II. szerver-kliens kapcsolat szálkezelés JAVA PROGRAMOZÁS 10. GYAKORLAT Java hálózatkezelés II. szerver-kliens kapcsolat szálkezelés JAVA PROGRAMOZÁS 10. GYAKORLAT Socket Hálózati kommunikáció alapja Kapcsolatkiépítés: bind() ezen a címen és portonkeresztül connect() erre

Részletesebben

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra.

Hello World Servlet. Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra. Hello World Servlet Készítsünk egy szervletet, amellyel összeadhatunk két számot, és meghívásakor üdvözlőszöveget ír a konzolra. Hozzunk létre egy Dynamic Web projectet File New Other itt a következőket

Részletesebben

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit.

Java technológiák - ANTAL Margit. komponensek. A HTTP protokoll. Webkonténerek és szervletek. Egyszerű HTTP. ANTAL Margit. Sapientia - EMTE 2010 A célja A viselkedése Megjelenítés komponenstípusok Adatok megjelenítése: grafikonok, táblázatok Űrlapok Navigációs elemek: menük, hiperlinkek Informácios képernyők: útbaigazítások,

Részletesebben

4. Gy: JAVA osztályok

4. Gy: JAVA osztályok Objektum Orientált Programozás 4. Gy: JAVA osztályok 25/1B IT MAN B IT v: 2016.02.24 MAN Feladatok 1. Készítsen egy Teglalap osztályt - legyen adattagja a két oldal tárolására (egészek) - legyen konstruktora,

Részletesebben

Osztályok. 4. gyakorlat

Osztályok. 4. gyakorlat Osztályok 4. gyakorlat Az osztály fogalma Az objektumok formai leírása, melyek azonos tulajdonsággal és operációkkal rendelkeznek. Osztályból objektum készítését példányosításnak nevezzük. Minden objektum

Részletesebben

Hálózati architektúrák laborgyakorlat

Hálózati architektúrák laborgyakorlat Hálózati architektúrák laborgyakorlat 10. hét Dr. Orosz Péter, Skopkó Tamás 2012. szeptember A Unix (C) socket A kommunikációt lehetővé tevő programozási eszköz UNIX fájlleíró (ld. minden egy fájl filozófia)

Részletesebben

1. Alapok. Programozás II

1. Alapok. Programozás II 1. Alapok Programozás II Elérhetőség Név: Smidla József Elérhetőség: smidla dcs.uni-pannon.hu Szoba: I916 2 Irodalom Bjarne Stroustrup: A C++ programozási nyelv 3 Irodalom Erich Gamma, Richard Helm, Ralph

Részletesebben

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban

Adabáziselérés ODBC-n keresztül utasításokkal C#-ban Adabáziselérés ODBC-n keresztül utasításokkal C#-ban 1. Előkészítés Access adatbázis lemásolása, ODBC DSN létrehozása Másoljuk le az alábbiakat: Mit Honnan Hova list.mdb p:\johanyák Csaba\Vizualis programozas\data\

Részletesebben

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat Kivételkezelés, beágyazott osztályok Nyolcadik gyakorlat Kivételkezelés Nem minden hibát lehet fordítási időben megtalálni Korábban (pl. C-ben) a hibakezelést úgy oldották meg, hogy a függvény hibakódot

Részletesebben

Információ és kommunikáció

Információ és kommunikáció Információ és kommunikáció Tanmenet Információ és kommunikáció TANMENET- Információ és kommunikáció Témakörök Javasolt óraszám 1. Az internet jellemzői 25 perc 2. Szolgáltatások az interneten 20 perc

Részletesebben

Programozás C++ -ban 2007/7

Programozás C++ -ban 2007/7 Programozás C++ -ban 2007/7 1. Másoló konstruktor Az egyik legnehezebben érthető fogalom C++ -ban a másoló konstruktor, vagy angolul "copy-constructor". Ez a konstruktor fontos szerepet játszik az argumentum

Részletesebben

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás

Számítástechnika II. BMEKOKAA Előadás. Dr. Bécsi Tamás Számítástechnika II. BMEKOKAA153 5. Előadás Dr. Bécsi Tamás Kivételkezelés try Azon utasítások kerülnek ide, melyek hibát okozhatnak, kivételkezelést igényelnek catch( típus [név]) Adott kivételtípus esetén

Részletesebben

Java Programozás 3. Gy: Java GUI. Swing, AWT

Java Programozás 3. Gy: Java GUI. Swing, AWT Java Programozás 3. Gy: Java GUI Swing, AWT 35/1 B ITv: MAN 2018.02.25 Feladat Készítsük el az Emp osztály kezelő programját úgy, hogy ArrayList-et (listatömb, tömblista, rugalmas tömb) használunk. A java.util.arraylist

Részletesebben

Objektumorientált programozás C# nyelven III.

Objektumorientált programozás C# nyelven III. Objektumorientált programozás C# nyelven III. Kivételkezelés Tulajdonságok Feladatok Készítette: Miklós Árpád Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és

Részletesebben

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos

OOP I. Egyszerő algoritmusok és leírásuk. Készítette: Dr. Kotsis Domokos OOP I. Egyszerő algoritmusok és leírásuk Készítette: Dr. Kotsis Domokos Hallgatói tájékoztató A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendı anyag vázlatát képezik. Ismeretük

Részletesebben

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés

OOP: Java 6.Gy: Java osztályok. Definíció, static, túlterhelés OOP: Java 6.Gy: Java osztályok Definíció, static, túlterhelés 45/1 B ITv: MAN 2019.03.18 Feladat Készítsen egy Alkalmazott osztályt saját csomagban, név, kor és fizetés adatokkal. Legyen egy osztályszintű

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Laboratóriumi gyakorlatok

Laboratóriumi gyakorlatok Laboratóriumi gyakorlatok Fehér Gyula Kóré László Analóg-Digitál átalakítók GYAKORLATOK TARTALOMJEGYZÉK 1. BEMUTATÓ VIZSGÁLATOK...4 1.1 P,//$1$7e57e.0e5 e6 È7/$*e57e.0e5 7Ë3862...4 1.2 P,//$1$7e57e.(7

Részletesebben

Bevezető. Servlet alapgondolatok

Bevezető. Servlet alapgondolatok A Java servlet technológia Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem Utolsó módosítás: 2008. 03. 06. Servlet Bevezető Igény a dinamikus WEB tartalmakra Előzmény: CGI Sokáig

Részletesebben

Java IX. telkezelés a Java-ban

Java IX. telkezelés a Java-ban Java IX. Kivétel telkezelés a Java-ban Krizsán Zoltán Miskolci Egyetem Általános Informatikai Tanszék Utolsó módosítás: 2005. 11. 17. Java IX. Kivételkezelés JAVA9 / 1 A kivételkezel telkezelés célja Kivételes

Részletesebben

Programozási technológia

Programozási technológia Programozási technológia Osztályszintű elérés Kivételkezelés, Fájlkezelés Dr. Szendrei Rudolf ELTE Informatikai Kar 2018. Osztályszintű elérés (statikusság) Az osztályban definiált attribútumok és műveletek

Részletesebben

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10)

OCSP Stapling. Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) OCSP Stapling Az SSL kapcsolatok sebességének növelése Apache, IIS és NginX szerverek esetén 1(10) 1. Tartalomjegyzék 1. Tartalomjegyzék... 2 2. Bevezető... 3 3. OCSP Stapling támogatással rendelkező webszerverek...

Részletesebben

Számítógépes Hálózatok GY 6.hét

Számítógépes Hálózatok GY 6.hét Számítógépes Hálózatok GY 6.hét Laki Sándor ELTE-Ericsson Kommunikációs Hálózatok Laboratórium ELTE IK - Információs Rendszerek Tanszék lakis@elte.hu http://lakis.web.elte.hu Teszt 10 kérdés 10 perc canvas.elte.hu

Részletesebben

A Java programozási nyelv

A Java programozási nyelv 1. óra A Java programozási nyelv Bevezetés, alapfogalmak Változók, egyszerű típusok, tömb Vezérlési szerkezetek Standard I/O legradi.gabor@nik.bmf.hu szenasi.sandor@nik.bmf.hu Java programozási nyelv Témakörök

Részletesebben

Osztályszintű elérés, kivételkezelés, fájlkezelés

Osztályszintű elérés, kivételkezelés, fájlkezelés Programozási, kivételkezelés, fájlkezelés Informatikai Kar Eötvös Loránd Tudományegyetem 1 Tartalom 1 2 3 4 2 (statikusság) Az osztályban definiált attribútumok és műveletek az osztályból példányosított

Részletesebben