|
Technológie JavaTM - cvičenia Cvičenie 13 |
||||||||||||||||||||||||||||||||||||||||||
Obsah
Otázky Kontakt Download Dokumentácia Zadania HyperNews |
Téma
Počítače vrámci Internetu komunikujú navzájom protokolom TCP (Transmission Control Protocol) alebo UDP (User Datagram Protocol). Nasledujúci obrázok znázorňuje vrstvy TCP/IP sieťového modelu.
TCP (Transmission Control Protocol) TCP je spojovo-orientovaný protokol, ktorý zabezpečuje tok informácií medzi koncovými stanicami (počítačmi). Zároveň je overovaná úspešnosť doručenia informácie cieľovej stanici. Taktiež je garantované poradie príjmania dát (Skôr poslané dáta budú skôr doručené).
UDP je protokol, ktorý slúži na posielanie blokov dát (packetov) bez overenia úspešnosti doručenia. Pri tomto
protokole nemusí platiť, že skôr poslané dáta budú aj skôr doručené ako dáta poslané neskôr. Tento protokol je z
dôvodov uvedených jednoduchší ako predchádzajúci protokol TCP a tým aj menej zaťažuje prenosové pásmo. Ak sa vám zdá
nepoužiteľný z dôvodu možnej nespoľahlivosti nie je to celkom tak. Existuje mnoho aplikácií (hlavne aplikácie reálneho času),
ktoré nie sú viazané len na obsah prenosu ale aj čas doručenia. V prípade chyby prenosu nemá zmysel prenos opakovať, pretože
údaj už nemusí byť platný. Takýmto príkladom môže byť prenos informácie o čase. Počítač je vo väčšine prípadov pripojený k počítačovej sieti jediným rozhraním. Po tomto rozhraní putujú informácie, ktoré predstavujú sieťovú komunikáciu. V tom istom čase však môže pracovať so sieťou viacero aplikácií (napr. WWW server, FTP server, SMTP server). V tomto prípade je nutné určiť adresáta (aplikáciu), ktorému patria dáta vrámci jednej koncovej stanice. Práve na toto odlíšenie existujú porty v protokoloch TCP a UDP.
V protokoloch UDP a TCP sa porty používajú na mapovanie prichádzajúcich dát na príslušný bežiaci proces na cieľovej stanici.
Porty sú očíslované od 0 do 65535 - 16 bitové číslo. Porty od 0-1023 sú však pridelené štandardným aplikáciám. Pre vlastnú potrebu sa používajú porty mimo tohto rozsahu. Pridelené porty je možné nájsť v RFC 1700 http://www.faqs.org/rfcs/rfc1700.html. Nasledujúca tabuľka prezentuje niekoľko pridelených čísel portov:
URL (Uniform Resource Locator)
URL predstavuje adresu zdroja (referenciu) na Internete.
Java poskytuje na tvorbu aplikácií komunikujúcich po sieti balík String getProtocol() String getHost() String getPath() String getPort() String getRef()Java zároveň ponúka jednoduchú možnosť získania špecifikované zdroja - t.j. umožňuje čítať priamo z URL. Použitím funkcie openStream() priamo získame stream na dané URL. S týmto streamom je potom
možné pracovať ako so vstupným streamom, viď Cvičenie 7.
Zdrojový text príkladu URLReader.java.
import java.net.*;
import java.io.*;
public class URLReader {
public static final String resource="http://hornad.fei.tuke.sk/kpi/index.html";
public static void main(String[] args) throws Exception {
URL url = new URL(resource);
InputStream in=url.openStream();
int c;
while((c=in.read())!=-1){
System.out.print((char)c);
}
in.close();
}
}
Nasledujúci príklad prezentuje jednoduchú aplikáciu Echo. Po spustení
Vzhľadom na to, že server pracuje len ako jedno vlákno, nemôže súčasne obsluhovať viacero klientov.
Vylepšením je server pre ľubovoľný počet súčasne pripojiteľných klientov - implementácia pomocou vlákna pre
každého pripojeného klienta EchoServer.java.
Záverom je prezentovaná aplikácia klient-server - triviálny chatovací program. Pozostáva zo serveru, na ktorý
sa pripájajú klienti.
Zhrnutie
|