Java, ProgrammingJavaLecture5

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

1

Programowanie w Java 5

Wielowątkowość

Interfejs

Programowanie sieciowe

Serwer/Client

Dla Specjalizacji Systemy Informacyjne w

Gospodarce

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

2

Threads - Wątki

Dziedziczymy klasę z klasy Thread

Class MyThreadedClass extends Thread { ...

Posiada metody start i run

Metodę run przedefiniujemy wstawiając operacje które

chcemy wykonać w wątku

Nowy Wątek tworzymy przy pomocy operatora

new (tak jak inne obiekty) i aktywujemy wołając

metodę start

MyThreadedClass MyThr = new MyThreadedClass();
MyThr.start();

Metoda start z kolei (bez naszego udziału)

woła metodę run

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

3

Wady dziedziczenia z
Thread

Zwykle nasze klasy pochodzą od jekiejś
struktury klas

Zapewnia to dostęp do danych w tych klasach

Możemy używać metod zdefiniowanych w
klasach przodków

Chcielibyśmy móc używać tych samych
mechanizmów przy programowaniu
wielowątkowym ale:

musimy dziedziczyć z klasy thread

W Javie nie ma dziedziczenia od kilku klas

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

4

Interfajsy

Interfajs pozwala ominąć ograniczenie dziedziczenia od

jednej klasy

Interfajs można dziedziczyć z wielu interfejsów i można

dodać do klasy dziedziczonej z dowolnej klasy

Definiowanie interfajsu (przykład z java.lang)

public interface Runnable {

void run(); }

Definiuje abstrakcyjną metodę run

Użycie interfajsu

Class MyClass extends MySuperClass implements

Runnable {.... public void run() {.....} ....}

Musimy zdefiniować metodę run wymaganą przez

interfejs

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

5

Użycie interfajsu w
wątkach

Nie dziedziczymy z klasy Thread ale:

definiujemy obiekt typu Thread

Tworzymy obiekt z naszej klasy (

MyClass )

Możemy dziedziczyć skąd chcemy (n.p.

MySuperClass)

Musimy zaimplementować interfejs Runnable

MyClass MyObj=new MyClass();

Podajemy jako argument konstruktora nasz obiekt

Startujemy wątek (thread)

Thread thr=new Thread(MyObj);
Thr.start;

Thread thr zawoła metodę run naszego obiektu MyObj

zdefiniowaną w klasie MyClass

Mającą dostęp do danych i metod w

MySuperClass

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

6

Porty TCP

Porty są numerowane 0 .. 65536

Część jest zarezerwowana dla

określonych standartowych usług 0-

1023

Porty 48-64K są do użytku swobodnego

Podłączenie TCP do danego portu

nazywa się socket (gniazdko)

Należy użyć pakietu java.net.*

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

7

Koncepcja Klient/Serwer

Implementujemy dwa programy

Serwer

przesyła lub pobiera dane na żądanie klienta

Operacje są kontrolowane przez żądania klienta

Klient

inicjuje połączenie z serwerem i wymienia (pobiera
lub przesyła) dane z serwerem

Kontroluje przepływ informacji (wysyła komendy)

Nie jest istotne czy programy działają na
jednym czy na komputerach połączonych
internetem

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

8

Przykład klasy serwera

Serwer

import java.net.*;

class Server {

ServerSocket server;
Socket socket;
public DataInputStream in;
public PrintStream out;

Public Server(int port)
server=new ServerSocket(port);
socket=server.accept();
in = new

DataInputStream(socket.getInputStrea

m());

out = new PrintStream

(socket.getOutputStream());

Funkcje

SerwerSocket jest
zdefiniowany w pakiecie
java.net

Tworzymy obiekt serwer
nasłuchujący (accept)
na podanym porcie

Jeśli klient „podłączy
się” to otwieramy
socket

Pobieramy informacje
od klienta i
odpowiadamy

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

9

Program serwera

Program ServerTest

public class ServerTest {

final static int SERVER_PORT=8001;

Public static void main(String[] args) {
Server server;
String clientCmd;

server =new Server(SERVER_PORT);
while (!quit) {
clientCmd=server.in.readLine();
.....
server.out.println(„Odpowiedz...”);
}
}

Funkcje

Zwykły program Javy
z funkcją main

Definiujemy port n.p.
8001 i nie zmieniamy
(final)

Tworzymy server z
naszej klasy Server

Pobieramy i wysyłamy
tekst tak jakbyśmy
czytali lub pisali do
pliku

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

10

Przykład klasy klienta

Klient

Class Client {
public DataInputStream in;
public PrintStream out;
Socket client;

public Client(String host, int port)

{

client = new Socket(host, port);

in = new

DataInputStream(client.getInputStre

am());

out = new PrintStream

(client.getOutputStream());

}
}

Funkcje

Definiujemy obiekt
client który otwiera
połączenie do
servera
new Socket(host,
port)

Pobieramy
informacje od
klienta i
odpowiadamy

background image

03/05/02

Programowanie Java 5 Copyri
ght Marek A. Chmielowski

11

Program clienta

Program ClientTest

public class ClientTest {

final static int SERVER_PORT=8001;

Public static void main(String[] args) {
Client client;
String clientCmd;

client =new Client(„localhost”,

SERVER_PORT);

while (!quit) {
client.out.println(„Wyślij...”);
.....
clientCmd=client.in.readLine();

}
}

Funkcje

Zwykły program Javy z

funkcją main

Definiujemy port

identyczny jak na

serwerze n.p. 8001 i nie

zmieniamy (final)

Tworzymy client z

naszej klasy Client

(łączy się z lokalnym

komputerem)

Wysyłamy i pobieramy

tekst tak jakbyśmy

czytali lub pisali do pliku


Document Outline


Wyszukiwarka

Podobne podstrony:
Java Programowanie Sieciowe Podstawy Javy id 226331
Java, ProgrammingJavaLecture2
Java, Programowanie W Jezyku Java
Java, ProgrammingJavaLecture4
Java Programowanie, biblioteki open source i pomysly na nowe projekty
java programming unleashed [ EN ] Java2
Java, ProgrammingJavaLecture1
Zeszyt Java, Programowanie obiektowe i strukturalne, Java
Java i Programowanie w Sieci Internet
Generics in the Java Programming Language
Sun Java Training SL 275 Java Programming Language Overheads (Sun Microsystems, 2000)
Java Programowanie, biblioteki open source i pomysly na nowe projekty
Java programy
143030393X {72191ACF} Fast Track to Sun Certified Java Programmer (SCJP) 5 0 Upgrade Exam [Tong 2006
Java Programowanie biblioteki open source i pomysly na nowe projekty
Java Programmer 2 exam objectives

więcej podobnych podstron