Java тілінде желілік құралдар

Желілік құралдар
Осы уақытқа дейін біз Java тілінің өзімен ,Jаva API ге енгізілген пакеттермен,графикамен және терезелермен жұмысты,сонымен қатар Java дағы ағындардың негізгі қасиеттерімен жұмыс жасаудың негізгі мүмкіндіктеріне тоқталған едік.
Java.net пакеті өз апплеттерін құруға және Java-да басқа компьютерлермен желі бойынша өзара байланыста болу үшін ашылған программалармен жұмыс жасауға мүмкіндік береді. Java- ға қызығушылық көбінесе екі жеңіл қатынау Web- браузерлер , Netscape және Hotjava Интернет бойынша Java апплеттерді жүктеумен және орындаумен түсіндіріледі.
Апплеттер Интернетпен және жалпы желімен тығыз байланысты.Сондықтан Java API желілік кластардың үлкен пакетінен тұратыны таң қалдырмайды.Апплеттер жергілікті компьютердің файлдарынан мәліметтер жүктей алмайтындықтан,олар мәліметтерді желіде сақтау керек және қайтадан қайтара алуы керек.API-дегі желілік кластарды екі негізгі топқа бөлуге болады сокеттермен айналысатын кластар және URL- мен айналысатын кластар.
Сокеттер мәліметтерді беру әдісін жүзеге асырмайды олар осы жұмысты орындайтын ағындар деп аталатын,енгізу/шығарудың жалпы кластарының даналарын құрады.Сокеттерді телефон сымдарымен салыстыруға болады.Осы ұқсастықты жалғастыра отырып, шығатын ағындарды дауыспен, кіретін ағындарды құлақпен салыстыруға болады.Сокет мәліметтерді желі бойынша тасымалдайды, ағындар мәліметтерді сокетке салады және оларды сыртқа шығарады.Ағындар өз ісінде пайдалы, егер сіз оларды апплеттерді программалауда қолданатын болсаңыз, онда бәрінен бұрын сокетпен біріктіріп немесе апплеттер арасындағы өзара әрекетте қолданған жөн.
Порттар мен сокеттер
Сокет идеясы Интернетте қолданылатын ТСР/IP – протоколымен үздіксіз байланысқан.Негізінен сокет желінің екі хосты арасындағы мәліметтердің үздіксіз байланысы болып табылады.Ол соңғы компьютердің желілік адресімен, сонымен қатар әр хостта портпен анықталады.Желідегі компьютерлер желіден келетін мәліметтер ағынын арнайы қабылдағыш программаларға бағыттайды, ол әр программаға жеке номер- программа портын тағайындайды.Порт- бұл клиент пен сервер арасындағы коммуникация арқылы жүзеге асырылатын абстрактілі физикалық объект.Бұл жағдайда сервер портты береді, ал клиент олармен бірігеді.
Демек, шығу мәліметтерді генерацияланғанда, мәліметтер беруді иницирлейтін программаға транзакция үшін порт номері тағайындалады.Өшірілген компьютер кіру мәліметтеріне жауап бере алмайды.TCP/IP- де арнайы протоколдар үшін порттардың анықталған номерлері сақталады-мысалы, SMTP үшін 25 және HTTP үшін 80. 1024 тен аз барлық порттардың номерлері жүйелік администратор үшін әр хостта сақталады.
Бір порт үшін бірнеше сокеттер құруға болады,бірнеше қолданушыға берілген қызметке қатынауға рұқсат алуға мүмкіндік береді.
Сокет құрғаннан кейін клиент пен сервер берілген бірігу тәсілімен анықталған ақпаратпен алмаса алады.Алмасуды ұйымдастырудың қарапайым әдістері болып жай ағынды серверден клиентке орнату болып табылады. Одан кейін сервер мәліметтерді алу мен жіберу үшін read және print әдістерін қолдана алады.
Егер Java – программа клиент болып табылса, онда ол ұқсас сервер ағындарына сәйкес сокеттер мен ағындардан тұруы керек.Telnet тәрізді қызметші программа да клиент бола алады.Сервер ретінде жүйелік қызметті алуға болады, мысалы, уақыт қызметі.
Java API класты сокеттердің өзара әрекетін java.net.Socket жүзеге асырады.Программаның келесі фрагменті ең қарапайым конструкторды қолданады:
Try{
//сокеттер арасында басйланыс құру
Socet s=new Socket (www.vmedia.com,25)
/*программаның бұл бөлігісокетпен өзара әрекетте болады*/ // сокеттер арасындағы байланысты жабу
s.close();
}catch(UnknownHostException e) {
// хост белгісіз
} catch (IOException e) {
// байланыс кезінде енгізу/шығару қатесі
}
3- кесте Socket класының конструкторлары
Конструктор Сипатталуы
Socet(String,int) Хост аты және байланысқа арналған порт
Socet(String,int,Boolean) Хост аты,порт және сокеттің бульдік көрсеткіші:ағындар (ақиқат) үшін немесе датаграммалар (жалған) үшін
Socet(InetAddress,int) Интернеттік адрес және байланысқа арналған порт
Socet(InetAddress,int,Boolean) Интернеттік адрес,порт және сокеттің бульдік көрсеткіші:ағындар (ақиқат) үшін немесе датаграммалар (жалған) үшін
Сокетті құрған кезде қандай хостпен бірігу керектігін көрсетуге болады: хост атынан тұратын String типті айнымалының берілуімен. Осы екі тәсілдің арасында қандай айырмашылық бар? Мұны толық түсіну үшін сізге біраз TCP/IP жайлы білу керек болады.
TCP/IPпротоколы бойынша байланысты жүзге асыратын желідегі әрбір хостқа,соның ішінде Интернетке,IP-адрес деп аталатын бірегей сандық идентификатор тағайындалған.
Netscape Navigator 2.0 өшірілген серверлерден жүктелетін сенімсіз апплеттерге Интернетте сокеттерді кез келген машинаға ашуға рұқсат етпейді. Апплет сокеттерді тек өзі жүктелген хосттан аша алады. Бұл қасиет апплеттерге қажет емес немесе байқалмайтын мəліметтерді, олар жіберілетін кез келген машинадан алуға мүмкіндік бермейді. Цифрлық авторизациямен тексерілген сенімді апплеттер сенімсіздерге қарағанда, шектеулері аз болады.
Олар Интернетте кез келген хостпен өзара əрекетте болу мүмкіндігін алады. Бірақ Sun компаниясы сенімді апплеттердің идентификациясының механизмін əлі өңдеген , жоқ сол үшін барлық өшірілген апплеттер сенімсіз деп есептеледі.Апплеттер қауіпсіздігін қамтамасыз етумен байланысты шектеулер берілген қолданушының жергілікті класына тиісті каталогтан жүктелген апплеттерге қолданылмайды.
Қолданушылар бұл шектеулерді айналып өтудің бір тəсілі–апплетті өздерінің жергілікті кластарының каталогтарында орнату. Басқа тəсіл – апплет бар хосттан жіберілетін серверді жазу жəне жаңа бекітілу бойынша анықталған портқа келетін мəліметтерді қайта бағыттайды.
Үшінші тəсіл – бір Web-парақта апплет өзара əрекеттесетін хосттағы апплеттер жиыны.
Егер сіздің операциялық жүйеUNIX болмаса жəне сіз уақытша клиенттің апплетін жергілікті қатты дискіден немесе Companion CD-ROM-нан жүктейтін болсаңыз, 1-мысал жұмыс жасамайды (осы дəрістің басқа мысалдары тəрізді), егер сізде кездейсоқ уақыт сервері болмаса. Бұл апплеттің жұмыс жасауын үшінкөру http://www.vmedia.com/vvc/onlcomp/java/chapter13/example1/TimeApplet.htm кіріңіз.
Қарапайым уақытша клиенттің орындалуына мысал.Клиент уақыт серверімен апплет жүктелген хостта бірігеді. Уақыт сервері бірігу орнатылғанша күтеді де,ағымдағы уақытты хабарлайды жəне байланысты жабады. Біздің клиенттің бар жасайтыны– бұл байланысты ашып мəліметтерді оқу.
Уақыт серверінен шығу мəліметтерін оқу үшін осы мəліметтерден тұратын байттар массивіне бастапқы мəндерді меншіктейміз жəнеInputStream-нен уақыт бірлігіне бір байт бойынша ақпаратты оқимыз. Ағын толған кезде InputStream оқытуəдісі 1-ді қайтарады (өшірілген хостта сокет жабылғаннан кейін). Жай кіріс мəліметтері 50 байттан аз алады деп есептейміз, бірақ кейінірек серверден мəліметтердің белгісіз санын алудың ең тиімді тəсілдерін көрсетеміз.
private String readString(InputStream in) {
byte ary[] = new byte[50];
byte buf;
int count=0; try {
buf=(byte)in.read(); while (buf!=-1) {
ary[count]=buf; count++;
buf=(byte)in.read();
}
}catch (IOException e) { error = e
return null
}
return new String(ary,0).trim();
}
Paint әдісі уақыт серверінен шығу мәліметтерін береді,егер бәрі жақсы өтсе, немесе қате жайлы ақпарат берсе немесе дұрыс болмаса:
Public void paint(Graphics g) {g.setColor(Color.write):g.fillRect(0,0,499,249); g.setColor(Color.black);g.drawRect(0,0,499,249);if (error!=null) {
g.drawString(error.toString(),25,25);
g.drawString(error.getMessage(),25,25);} else {
g.drawString(output,25,25);
}
}
}
Сокеттермен әсіресе Java да жұмыс істеген жеңіл,барлық жұмыс кіру және шығу мәліметтерін орындауға әкеледі.Уақыт серверімен өзара әрекеттесетін жеңіл, өйткені ол кіру мәліметтерін талап етпейді.Функционалды серверлермен қалай өзара әрекеттесетінін көрсету үшін бізге ағындар класын тереңірек зерттеуге тура келеді.Ағындарға өтпес бұрын біз желілік қатынау үшін датаграммаларды қолдануға мүмкіндік беретін API кластарын қысқаша тоқталамыз.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *