Narzędzia użytkownika

Narzędzia witryny


sk2:java

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
sk2:java [2022/11/23 22:29]
jkonczak
sk2:java [2023/12/01 13:08] (aktualna)
jkonczak [Zadania]
Linia 67: Linia 67:
  
 ==Serwer== ==Serwer==
-Serwer UDP od klient różni się tym, że używa [[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​net/​DatagramSocket.html#​%3Cinit%3E(int)|konstruktora przyjmującego numer portu]] lub metody ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​net/​DatagramSocket.html#​bind(java.net.SocketAddress)|bind]]''​+Serwer UDP od klient różni się tym, że używa [[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​net/​DatagramSocket.html#​%3Cinit%3E(int)|konstruktora przyjmującego numer portu]] lub metody ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​net/​DatagramSocket.html#​bind(java.net.SocketAddress)|bind]]''​
  
 ==Multicast== ==Multicast==
-Multicast używa klasy ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​net/​MulticastSocket.html|MulticastSocket]]''​ która jest klasą ''​DatagramSocket''​ wzbogaconą o kilka metod, m. inn. dołączenie do grupy:+Multicast używa klasy ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​net/​MulticastSocket.html|MulticastSocket]]''​ która jest klasą ''​DatagramSocket''​ wzbogaconą o kilka metod, m. inn. dołączenie do grupy:
 <code java> <code java>
 MulticastSocket socket = new MulticastSocket(1313);​ MulticastSocket socket = new MulticastSocket(1313);​
Linia 95: Linia 95:
 Przypomnienie wątków i synchronizacji w  Javie: Przypomnienie wątków i synchronizacji w  Javie:
 [[https://​docs.oracle.com/​javase/​tutorial/​essential/​concurrency/​locksync.html|synchronized (czyli zamki)]] \\ [[https://​docs.oracle.com/​javase/​tutorial/​essential/​concurrency/​locksync.html|synchronized (czyli zamki)]] \\
-[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​util/​concurrent/​package-summary.html|java.util.concurrent]] \\+[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​util/​concurrent/​package-summary.html|java.util.concurrent]] \\
 nowy wątek, używając lambdy: nowy wątek, używając lambdy:
 <code java> <code java>
Linia 105: Linia 105:
  
  
-//Zadanie 1.// Napisz klienta TCP z użyciem ''​java.io''​ i wątków. \\ (Możesz skorzystać z szablonu kodu z TODO's do zrobienia: {{:sk2:tcpclienttemplate.java|TcpClientTemplate.java}})+//Zadanie 1.// Napisz klienta TCP z użyciem ''​java.io''​ i wątków. \\ (Możesz skorzystać z szablonu kodu z TODO's do zrobienia: {{:sk2:TcpClientTemplate.java|tcpclienttemplate.java}}) ​
  
 //Zadanie 2.// Napisz program odbierający i wysyłający wiadomości UDP od/do grupy multicastowej z użyciem ''​java.io''​ i wątków. //Zadanie 2.// Napisz program odbierający i wysyłający wiadomości UDP od/do grupy multicastowej z użyciem ''​java.io''​ i wątków.
Linia 121: Linia 121:
 ==== Klasy obsługujące gniazda (kanały) ==== ==== Klasy obsługujące gniazda (kanały) ====
 Ważne klasy (sieciowe): Ważne klasy (sieciowe):
-  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​nio/​channels/​SocketChannel.html|SocketChannel]]''​ – gniazdo TCP (//​connect//,​ klient) +  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​nio/​channels/​SocketChannel.html|SocketChannel]]''​ – gniazdo TCP (//​connect//,​ klient) 
-  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​nio/​channels/​ServerSocketChannel.html|ServerSocketChannel]]''​ – gniazdo TCP (//​listen//,​ serwer) +  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​nio/​channels/​ServerSocketChannel.html|ServerSocketChannel]]''​ – gniazdo TCP (//​listen//,​ serwer) 
-  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​nio/​channels/​DatagramChannel.html|DatagramChannel]]''​ – gniazdo UDP +  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​nio/​channels/​DatagramChannel.html|DatagramChannel]]''​ – gniazdo UDP 
-  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​nio/​channels/​Selector.html|Selector]]''​ – multiplekser+  * ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​nio/​channels/​Selector.html|Selector]]''​ – multiplekser
 Obiekty z tych klas są tworzone metodą statyczną ''​open()'',​ np: Obiekty z tych klas są tworzone metodą statyczną ''​open()'',​ np:
 <code java> <code java>
Linia 158: Linia 158:
 ==== Bufory ==== ==== Bufory ====
  
-NIO używa dedykowanych klas buforów – np. ''​[[https://​docs.oracle.com/​en/​java/​javase/​19/​docs/​api/​java.base/​java/​nio/​ByteBuffer.html|ByteBuffer]]''​. Klasy te służą opakowaniu tablic (np. tablicy bajtów) w sposób nie ograniczający wydajności.+NIO używa dedykowanych klas buforów – np. ''​[[https://​docs.oracle.com/​en/​java/​javase/​21/​docs/​api/​java.base/​java/​nio/​ByteBuffer.html|ByteBuffer]]''​. Klasy te służą opakowaniu tablic (np. tablicy bajtów) w sposób nie ograniczający wydajności.
  
 Bufor można tworzyć metodami statycznymi,​ np. ''​ByteBuffer.allocate()''​ i ''​ByteBuffer.wrap()''​. Bufor można tworzyć metodami statycznymi,​ np. ''​ByteBuffer.allocate()''​ i ''​ByteBuffer.wrap()''​.
Linia 387: Linia 387:
 ==== Zadania ==== ==== Zadania ====
  
-//Zadanie 4.// Pobierz kod prostego serwera key-value store: {{:​sk2:​simplekv.java|SimpleKV.java}}.+//Zadanie 4.// Pobierz kod prostego serwera key-value store: {{:​sk2:​simplekv.java|simplekv.java}}.
 <​html><​small>​      </​html>​ <​html><​small>​      </​html>​
 ([[https://​en.wikipedia.org/​wiki/​Key-value_database]]) ([[https://​en.wikipedia.org/​wiki/​Key-value_database]])
sk2/java.1669238997.txt.gz · ostatnio zmienione: 2022/11/23 22:29 przez jkonczak