Przykłady interfejsu TCP i UDP w Javie



Podobne dokumenty
Java programowanie w sieci. java.net RMI

Programowanie aplikacji w architekturze Klient-Serwer - UDP

Programowanie w języku Java

Aplikacja wielowątkowa prosty komunikator

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Programowanie sieciowe

Aplikacja wielow tkowa prosty komunikator

Programowanie rozproszone w języku Java

JAVA I SIECI. MATERIAŁY:

Programowanie współbieżne i rozproszone

Serwer współbieżny połączeniowy

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

Networking. Zaawansowane technologie Javy 2019

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Obiekty sieciowe - gniazda Komputery w sieci Internet komunikują się ze sobą poprzez:

Platformy Programistyczne Zagadnienia sieciowe i wątki

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Katedra Architektury Systemów Komputerowych Wydział Elektroniki, Telekomunikacji i Informatyki Politechniki Gdańskiej

Java a dost p do Internetu.

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Java programowanie sieciowe

Aplikacje w Javie- wykład 11 Wątki-podstawy

Gniazda BSD implementacja w C#

KOMUNIKACJA MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Wykład 2: Podstawy Języka

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Adresy URL. Zaawansowane technologie Javy 2019

Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1

Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.

Język Java wątki (streszczenie)

Wykład 7 Tworzenie łącz w apletach, wątki, serializacja obiektów, gniazda

Podejście obiektowe do budowy systemów rozproszonych

Programowanie obiektowe

Łukasz Przywarty Wrocław, r. Grupa: WT/N 11:15-14:00. Sprawozdanie z zajęć laboratoryjnych: OpenSSL - API

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Podstawowe typy serwerów

Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu

Zadanie 2: transakcyjny protokół SKJ (2015)

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Oprogramowanie systemów równoległych i rozproszonych Wykład 7

K O M U N I K A C J A MIĘDZYPROCESOWA O B S Ł U G A WEJŚCIA/WYJŚCIA

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

Aplikacja Sieciowa wątki po stronie klienta

Aplikacje RMI

Komunikacja z użyciem gniazd aplikacje klient-serwer

Podstawy programowania obiektowego

Języki i metody programowania Java Lab1 Zofia Kruczkiewicz

Programowanie obiektowe zastosowanie języka Java SE

Ćwiczenie 9 - Zaawansowane metody programowania w sieci komputerowej

Klient-Serwer Komunikacja przy pomocy gniazd

Remote Method Invocation 17 listopada 2010

Komponenty sterowane komunikatami

1 Atrybuty i metody klasowe

Technologie internetowe laboratorium nr 4. Instalacja i uruchomienie usługi sieciowej w serwerze Tomcat/AXIS

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Java. Programowanie Obiektowe Mateusz Cicheński

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Programowanie w Javie Lista nr 1. Wybieramy kategorię Java, a wśród Projektów Java Application i [NEXT]

Język Java wątki (streszczenie)

Języki i metody programowania Java. Wykład 2 (część 2)

WYMIANA I SKŁADOWANIE DANYCH MULTIMEDIALNYCH

Model OSI/ISO. Komputer B. Warstwy w modelu OSI aplikacji. aplikacji. prezentacji Komputer A. prezentacji. sesji. sesji. komunikacja wirtualna

Remote Method Invocation 17 listopada rozproszonych. Dariusz Wawrzyniak (IIPP) 1

Gniazda komunikacji sieciowej w środowisku Java

Kurs programowania. Wykład 8. Wojciech Macyna

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

package pakieta; import pakietb.b; package pakietb; public class B { B(){} public class A { private B b; A(B b) { this.b = b; } }

Podejście obiektowe do budowy systemów rozproszonych

Java RMI. Dariusz Wawrzyniak 1. Podejście obiektowe do budowy systemów rozproszonych. obiekt. interfejs. kliencka. sieć

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

1. Co można powiedzieć o poniższym kodzie?

Dokumentacja do API Javy.

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

Programowanie obiektowe

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Programowanie aplikacji w architekturze Klient-Serwer - TCP

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

1. Co można powiedzieć o poniższym kodzie? public class A { void m(int a) { } int m(string s) { return Integer.parseInt(s); }

Wywoływanie metod zdalnych

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

Podstawy programowania w lejos

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

Programowanie w Internecie. Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Ćwiczenie 2. Obsługa gniazd w C#. Budowa aplikacji typu klient-serwer z wykorzystaniem UDP.

Klasy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 13

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Programowanie obiektowe

Programowanie obiektowe

Transkrypt:

Przykłady interfejsu TCP i UDP w Javie W Javie interfejsy TCP i UDP znajdują się w pakiecie java.net http://docs.oracle.com/javase/6/docs/api/java/net/packagesummary.html 1

Przykład interfejsu UDP Protokół UDP (RFC 768) zawodne dostarczanie pojedynczych pakietów. Prosty przykład: klient wysyła jeden pakiet do serwera i czeka na odpowiedź serwer drukuje każdy otrzymany pakiet i odsyła nadawcy klient drukuje otrzymaną odpowiedź i kończy działanie 2

Program klienta DatagramClient.java: import java.net.*; public class DatagramClient { public static void main(string args[]) { try{ /* 1. Wysłanie pakietu... */ InetAddress servaddr = InetAddress.getByName(args[0] byte buf[] = args[1].getbytes( DatagramSocket socket= new DatagramSocket( socket.send( new DatagramPacket( buf, buf.length, servaddr, 4321 // port serwera ) /* 2. Odbiór pakietu... */ buf = new byte[256]; DatagramPacket packet = new DatagramPacket( buf, buf.length socket.receive(packet 3

System.out.println( new String( packet.getdata() ) catch(exception e) { System.err.println(e 4

Program serwera DatagramServer.java: import java.net.*; public class DatagramServer{ public static void main(string args[]){ try{ DatagramSocket socket = new DatagramSocket(4321 while(true){ byte[] buf = new byte[100]; DatagramPacket packet = new DatagramPacket( buf, buf.length /* 1. Oczekujemy na pakiet...*/ socket.receive( packet System.out.println( new String(buf) /* 2. Odsyłamy do nadawcy... */ socket.send( new DatagramPacket( buf, buf.length, packet.getaddress(), packet.getport() ) 5

catch(exception e) { System.err.println(e 6

Kompilacja i uruchomienie: $ javac *.java $ java DatagramServer & # uruchomiony w tle [3] 3330 $ java DatagramClient 127.0.0.1 "Ala ma kota" Ala ma kota Ala ma kota $ java DatagramClient 127.0.0.1 "Ola ma kota" Ola ma kota Ola ma kota $ kill %3 [3]+ Exit 143 java DatagramServer 7

Przykład rozsyłania grupowego: multicast Adresy IP od 224.0.0.0 do 239.255.255.255 są zarezerwowane jako adresy grupowe. Jeden pakiet dostarczany jest do wszystkich odbiorców zapisanych do danej grupy. Program MulticastServer.java: import java.net.*; public class MulticastServer extends Thread{ public static void main(string args[]){ try{ DatagramSocket socket= new DatagramSocket( int counter=0; while(true){ byte[] buf= String.valueOf(counter).getBytes( socket.send( new DatagramPacket( buf, buf.length, InetAddress.getByName( "230.0.0.2" ), 4323 ) sleep(1000 counter++; 8

catch(exception e) { System.err.println(e 9

Program MulticastClient.java: import java.net.*; public class MulticastClient { public static void main(string args[]){ try{ MulticastSocket socket= new MulticastSocket(4323 InetAddress group = InetAddress.getByName("230.0.0.2" /* przyłączamy się do grupy... */ socket.joingroup(group for (int i = 0; i < 5; i++) { byte[] buf = new byte[256]; DatagramPacket packet = new DatagramPacket( buf, buf.length /* czekamy na kolejny pakiet...*/ socket.receive(packet System.out.println( new String( packet.getdata() ) /* opuszczamy grupę... */ socket.leavegroup(group 10

socket.close( catch(exception e) { System.err.println(e 11

Uruchomienie: $ java MulticastServer & # w tle [3] 3534 $ java MulticastClient 16 17 18 19 20 $ java MulticastClient 24 25 26 27 28 $ kill %3 [3]+ Exit 143 java MulticastServer 12

Przykład interfejsu TCP TCP (RFC 793 i inne...) nezawodne przesyłanie strumienia bajtów. Przykład wielowątkowego serwera, który obsługuje wiele połączeń równocześnie. Program StreamClient.java: import java.net.*; public class StreamClient{ public static void main(string args[]){ try{ Socket socket = new Socket( InetAddress.getByName(args[0]), 4322 int in; while( (in=system.in.read()) >= 0 ) socket.getoutputstream().write( (char) in socket.close( catch(exception e) { System.err.println(e 13

Wątek serwera do obsługi jednego połączenia: Klasa ServerThread.java: import java.net.*; import java.io.*; public class ServerThread extends Thread { Socket mysocket; public ServerThread(Socket socket) // konstruktor { super( // konstruktor klasy Thread mysocket = socket; public void run() // program wątku { try{ int in; /* odbieramy i drukujemy... */ while( ( in= mysocket.getinputstream().read() ) >= 0 ) System.out.print( (char) in mysocket.close( 14

catch(exception e) { System.err.println( e 15

Program serwera StreamServer.java: import java.net.*; public class StreamServer{ public static void main(string args[]){ try{ /* tworzymy socket bez drugiego końca... */ ServerSocket serversocket = new ServerSocket(4322 while(true){ /* czekamy na zgłoszenie klienta... */ Socket socket = serversocket.accept( /* tworzymy wątek dla danego połączenia i uruchamiamy jego program: run()...*/ (new ServerThread(socket)).start( catch(exception e) { System.err.println(e 16

Przykładowe uruchomienie: $ java StreamServer & [3] 3893 $ java StreamClient 127.0.0.1 # EOF: Ctrl+D Ala Ala ma ma Kota Kota $ kill %3 [3]+ Exit 143 java StreamServer Można też uruchomić jeden serwer i jednocześnie wielu klientów w różnych terminalach. 17