java. ćwiczenia zaawansowane. wydanie ii ebook, ebooki
[ Pobierz całość w formacie PDF ]
Spis treci
Wstp
5
Rozdzia 1.
Programowanie wspóbiene
7
Wtki i klasa Thread
7
Interfejs Runnable
12
Przerywanie pracy wtku
17
Wtki w aplikacjach okienkowych
20
Rozdzia 2.
Synchronizacja wtków
25
Modyfikacja wspólnych danych
25
Synchronizacja za pomoc sowa kluczowego synchronized
28
Nowe moliwoci synchronizacji
34
Rozdzia 3.
Programowanie sieciowe
43
Mechanizm gniazd
43
Gniazda w Javie
44
Gniazda serwerowe
51
Rozdzia 4.
Transmisja danych w modelu klient – serwer
57
Przesyanie danych w sieci
57
Serwer wielowtkowy
70
Sterowanie serwerem z konsoli
74
Rozdzia 5.
Aplikacje sieciowe z interfejsem graficznym
85
Budowa interfejsu
85
Obsuga interfejsu i procedury komunikacyjne
91
Tworzenie serwera
102
Obsuga protokou komunikacyjnego
107
4
Java • wiczenia zaawansowane
Rozdzia 6.
Wspópraca z bazami danych
117
Nawizywanie pocze
117
Wykonywanie zapyta pobierajcych dane
122
Dodawanie i modyfikacja rekordów
133
Obsuga rónych typów zapyta
140
Obsuga transakcji
144
3
Programowanie sieciowe
Mechanizm gniazd
Mechanizm gniazd jest znany wikszoci programistów, jednak dla tych czytelni-
ków, którzy si z nim nie zetknli, krótkie wyjanienie.
Gniazda
(ang.
sockets
) jest to mechanizm komunikacyjny, umoliwiajcy transmi-
sj danych pomidzy urzdzeniami w sieci opartej na protokole IP. Obecnie jest to
mechanizm powszechnie stosowany w komunikacji sieciowej. Gniazda mona
traktowa jako kocówki pocze znajdujce si w komputerach (ogólniej: urz-
dzeniach sieciowych). Std te pochodzi nazwa „gniazdo” — czyli co, do czego mo-
na woy wtyczk. Oczywicie w tym przypadku chodzi o wtyczk wirtualn.
Po utworzeniu gniazda mona uywa go do komunikacji z innym komputerem
bd te urzdzeniem sieciowym. Dane wysane do gniazda bd przesyane do urz-
dzenia, z którym zostao nawizane poczenie. Transmisja jest oczywicie dwukie-
runkowa, zatem dane odsyane przez odlege urzdzenie sieciowe mona rów-
nie odbiera z gniazda. Jest to zatem swego rodzaju punkt komunikacyjny.
Aby poczy si z odlegym komputerem, niezbdne jest okrelenie dwóch warto-
ci. Po pierwsze — jego adresu sieciowego IP, po drugie — numeru portu. Czym jest
numer portu? Otó na kadym komputerze moe dziaa wiele usug, np. serwer
WWW, poczty czy FTP. Trzeba zatem zakomunikowa, z jak usug (aplikacj,
procesem) ma nastpi poczenie. Numer portu jest wanie takim identyfikato-
rem. Liczba dostpnych portów jest zalena od rodzaju i wersji systemu opera-
cyjnego. Jednak niezalenie od tego, ile ich oferuje system, dla typowych protokoów
transmisyjnych TCP i UDP mona uy co najwyej 65 535 portów
1
, numerowanych
od 1 do 65 535 (port zerowy nie jest uywany do transmisji danych). Zatem teoretycznie
1
Wynika to z tego, e w nagówkach segmentów danych TCP i UDP na numer portu
zarezerwowane jest 16 bitów.
44
Java • wiczenia zaawansowane
dla jednego adresu IP tyle wanie rónych usug i serwisów mona zaoferowa
(w praktyce liczba ta bdzie mniejsza, gdy cz portów jest zarezerwowana, a po-
jedyncza usuga moe te korzysta z wielu z nich).
Gniazda z reguy dzielimy na
strumieniowe
— umoliwiajce transmisj strumienio-
w (np. TCP),
datagramowe
— umoliwiajce transmisj pakietow (np. UDP) oraz
tzw.
raw sockets
— pozwalajce na bezporednie wysyanie pakietów (ramek) IP
z pominiciem narzutu protokoów wyszych warstw sieciowych (spotykane tuma-
czenie nazwy to „gniazda surowe”). W dalszej czci rozdziau bdzie poruszany
jedynie temat gniazd strumieniowych.
Gniazda w Javie
W Javie dostpne s gniazda suce do komunikacji sieciowej. Ten, kto progra-
mowa „czyste” gniazda, np. pod Uniksem, bdzie jednak z pewnoci mile zasko-
czony, gdy mechanizmy te w przypadku Javy s o wiele bardziej przyjazne uyt-
kownikowi. Odpowiednie klasy znajduj si w pakiecie
java.net
. Do dyspozycji s
gniazda klienckie
(ang.
client socket
) i
serwerowe
(ang.
server socket
), zarówno
strumieniowe, jak i datagramowe. Do komunikacji wykorzystywany jest protokó IP.
Gniazda klienckie strumieniowe reprezentowane s przez klas
Socket
, która udo-
stpnia konstruktory przedstawione w tabeli 3.1.
Tabela 3.1.
Konstruktory klasy Socket
Konstruktor
Opis
Tworzy gniazdo niepoczone z adnym adresem.
Socket()
Tworzy nowe gniazdo podczone do adresu
address
i portu
port
.
Socket(InetAddress
address, int port)
Socket(InetAddress
address, int port,
InetAddress localAddr,
int localPort)
Tworzy nowe gniazdo podczone do adresu
address
i portu
port
oraz do lokalnego adresu
localAddr
i lokalnego portu
localPort
.
Tworzy nowe gniazdo, uywajce do komunikacji serwera
poredniczcego proxy wskazanego przez argument
proxy
.
Konstruktor dostpny od wersji JDK 1.5.
Socket(Proxy proxy)
Tworzy nowe gniazdo niepodczone do adnego adresu,
o implementacji zadanej przez uytkownika.
Socket(SocketImpl impl)
Socket(String host,
int port)
Tworzy nowe gniazdo podczone do adresu wskazanego przez
cig znaków
host
oraz portu wskazanego przez argument
port
.
Tworzy nowe gniazdo podczone do komputera
host
i portu
port
oraz do lokalnego adresu
localAddr
i lokalnego portu
localPort
.
Socket(String host,
int port, InetAddress
localAddr, int localPort)
[ Pobierz całość w formacie PDF ]