Felhasználói eszközök

Eszközök a webhelyen


tanszek:oktatas:informacios_rendszerek_integralasa:java_socket

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

Előző változat mindkét oldalon Előző változat
Következő változat
Előző változat
tanszek:oktatas:informacios_rendszerek_integralasa:java_socket [2024/03/01 20:36]
knehez
tanszek:oktatas:informacios_rendszerek_integralasa:java_socket [2024/03/06 08:34] (aktuális)
knehez
Sor 9: Sor 9:
 ==== UDP (User Datagram Protocol) ==== ==== UDP (User Datagram Protocol) ====
  
-  * **Nem megbízható**:​ Nem garantálja az adatok sorrendjét vagy sikeres kézbesítését;​ nincs újraküldés vagy sorrend ​helyreállítás. +  * **Nem megbízható**:​ Nem garantálja az adatok sorrendjét vagy sikeres kézbesítését;​ nincs csomag ​újraküldés vagy csomagsorrend ​helyreállítás. 
-  * **Kapcsolatmentes**:​ Nem igényel előzetes kapcsolatfelépítést az adatok küldése előtt, lehetővé téve a gyors adattovábbítást. +  * **Kapcsolatmentes**:​ Nem igényel előzetes kapcsolatfelépítést az adatok küldése előtt, lehetővé téve a gyors adattovábbítást. E miatt valós idejű adattovábbítást biztosít
-  * **Könnyűsúlyú**:​ Kevesebb fejlécinformációt használ, ami kevesebb hálózati terhelést jelent. +  * **Könnyűsúlyú**:​ Kevesebb fejlécinformációt használ, ami kevesebb hálózati terhelést jelent. 8 byte a fejléc mindössze
-  * **Alkalmazások**:​ Streaming média (videó, audio), online játékok, VoIP (Voice over Internet Protocol), és más időkritikus alkalmazások,​ ahol a sebesség fontosabb, mint a megbízhatóság.+  * **Alkalmazások**:​ Streaming média (videó, audio), online játékok, VoIP (Voice over Internet Protocol), ​IOT (Internet of Things) ​és más időkritikus alkalmazások,​ ahol a sebesség fontosabb, mint a megbízhatóság.
  
 ==== QUIC (Quick UDP Internet Connections) (2021-es szabvány) ==== ==== QUIC (Quick UDP Internet Connections) (2021-es szabvány) ====
  
-  * **Gyors kapcsolatfelépítés**:​ A QUIC csökkenti a kapcsolatfelépítés idejét, mivel kevesebb kézbesítési körre van szükség a kapcsolat létrehozásához,​ ami gyorsabb weboldal-betöltést tesz lehetővé. + 
-  ​ +  * **Párhuzamos, ​Multiplexált adatfolyam**:​ Egyetlen QUIC-kapcsolat több adatfolyamot is képes kezelni, ezáltal csökkentve az úgynevezett "​fejlécblokkolást",​ ami a TCP kapcsolatokban előfordulhat. 
-  * **Multiplexált adatfolyam**:​ Egyetlen QUIC-kapcsolat több adatfolyamot is képes kezelni, ezáltal csökkentve az úgynevezett "​fejlécblokkolást",​ ami a TCP kapcsolatokban előfordulhat. +  ​* **Független hiba- és áramlásszabályozás**:​ Minden QUIC-adatfolyam saját hiba- és áramlásszabályozással rendelkezik,​ ami azt jelenti, hogy egy folyam problémái nem befolyásolják a többi adatfolyam teljesítményét. 
-  ​+  * **Dinamikus prioritások**:​ A QUIC lehetővé teszi az adatfolyamok prioritásának dinamikus módosítását,​ amely segít optimalizálni az erőforrások felhasználását és javítja az alkalmazások válaszidejét.
   * **Titkosítás**:​ A QUIC alapértelmezés szerint biztosítja az adatok végponttól végpontig történő titkosítását,​ használva a TLS (Transport Layer Security) legújabb verzióit, ezáltal javítva az adatbiztonságot.   * **Titkosítás**:​ A QUIC alapértelmezés szerint biztosítja az adatok végponttól végpontig történő titkosítását,​ használva a TLS (Transport Layer Security) legújabb verzióit, ezáltal javítva az adatbiztonságot.
-  ​ 
   * **Kapcsolat migráció**:​ A QUIC képes fenntartani egy aktív kapcsolatot még akkor is, ha a felhasználó eszköze hálózatot vált (például Wi-Fi-ről mobil adatra), ami folyamatosabb élményt nyújt a mobil felhasználók számára.   * **Kapcsolat migráció**:​ A QUIC képes fenntartani egy aktív kapcsolatot még akkor is, ha a felhasználó eszköze hálózatot vált (például Wi-Fi-ről mobil adatra), ami folyamatosabb élményt nyújt a mobil felhasználók számára.
-  ​ +  * **Alkalmazások**:​ A QUIC-t széles körben ​használható (a normál böngészésen kívül) ​videó streaminghez,​ online játékokhoz, ​IOT (Internet of Things) ​és más, nagy sebességű és megbízhatóságot igénylő internetes alkalmazásokhoz.
-  * **Áramlásszabályozás és zsúfoltságkezelés**:​ A QUIC saját áramlásszabályozást és zsúfoltságkezelést implementál,​ amelyek optimalizálják az adatátvitelt a változó hálózati körülmények között. +
-   +
-  ​* **Alkalmazások**:​ A QUIC-t széles körben ​használják webböngészéshez, ​videó streaminghez,​ online játékokhoz,​ és más, nagy sebességű és megbízhatóságot igénylő internetes alkalmazásokhoz. +
  
 +[[https://​www.debugbear.com/​blog/​http3-quic-protocol-guide|további részletesebb információ]] ​
  
-====== Összetett ​feladat ​======+===== Gyakorló ​feladat =====
  
 Készítsen egy egyszerűsített FTP (file transport) klienst és szervert, amelynél a kliens elküldhet vagy letölthet szöveges file-okat a szerverről. Készítsen egy egyszerűsített FTP (file transport) klienst és szervert, amelynél a kliens elküldhet vagy letölthet szöveges file-okat a szerverről.
Sor 56: Sor 52:
   -) "​u"​ billentyű esetén a /​files/<​filename>​ állományt elküldi a szervernek   -) "​u"​ billentyű esetén a /​files/<​filename>​ állományt elküldi a szervernek
  
-====== Alappéldák ======+===== Kiinduló minták ​=====
  
  
Sor 67: Sor 63:
  
 === Socket szerver kód === === Socket szerver kód ===
-<code java>+<sxh java>
     import java.io.IOException;​     import java.io.IOException;​
     import java.io.ObjectInputStream;​     import java.io.ObjectInputStream;​
Sor 136: Sor 132:
     }     }
     }     }
-</code>+</sxh>
 === Socket kliens kód === === Socket kliens kód ===
-<code java>+<sxh java>
     import java.io.IOException;​     import java.io.IOException;​
     import java.io.ObjectInputStream;​     import java.io.ObjectInputStream;​
Sor 202: Sor 198:
     }     }
     }     }
-</code> +</sxh>
- +
- +
- +
- +
- +
  
 ==== 2.) Hagyományos UDP alapú kommunikáció ==== ==== 2.) Hagyományos UDP alapú kommunikáció ====
  
-2.a) Az alábbi Ágens küld egy üzenetet és a 8080-as porton várja a választ rá, ugyancsak UDP-vel. ​Az eclipse ​fejlesztőkörnyezetben a consolon beírt szöveget ctrl+z leütésével lehet elküldeni.+a) Az alábbi Ágens küld egy üzenetet és a 8080-as porton várja a választ rá, ugyancsak UDP-vel. ​//​Megjegyzés:​ az Eclipse ​fejlesztőkörnyezetben a consolon beírt szöveget ctrl+z leütésével lehet elküldeni.//
  
 **Feladat**:​ módosítsuk a kódot, hogy át tudjon küldeni egy beégetett nevű, és létező, 2 kbyte-nál nagyobb szöveges vagy kép állományt és ellenőrizzük a sikeres küldést. **Feladat**:​ módosítsuk a kódot, hogy át tudjon küldeni egy beégetett nevű, és létező, 2 kbyte-nál nagyobb szöveges vagy kép állományt és ellenőrizzük a sikeres küldést.
  
-<code java>+<sxh java>
   package org.ait;   package org.ait;
   ​   ​
Sor 225: Sor 215:
   import java.net.InetAddress;​   import java.net.InetAddress;​
   ​   ​
-  public class UDPClient ​{+  public class Component1 ​{
  public static void main(String args[]) throws Exception {  public static void main(String args[]) throws Exception {
  BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));​  BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));​
Sor 248: Sor 238:
  }  }
  }  }
-</code>+</sxh>
  
-2.b) Az UDP szerver ​a 8080-as porton várja az ágensek ​üzeneteit és nagybetűre konvertálva visszaküldi a kliens ​UDP socketre.+b) A másik ​UDP komponens (Component2) ​a 8080-as porton várja az ágens ​üzeneteit és nagybetűre konvertálva visszaküldi a Component1 ​UDP socket-ére.
  
-<code java>+<sxh java>
   package org.ait;   package org.ait;
   ​   ​
Sor 259: Sor 249:
   import java.net.InetAddress;​   import java.net.InetAddress;​
   ​   ​
-  public class UDPServer ​{+  public class Component2 ​{
  public static void main(String args[]) throws Exception {  public static void main(String args[]) throws Exception {
   
Sor 289: Sor 279:
  }  }
   }   }
-</code>+</sxh> 
 + 
 +Ha egy nagyméretű adatot szeretnénk elküldeni, egyben nem tudjuk megtenni, mert nem fér bele egy UDP csomagba. Ilyenkor egy ciklusban fel kell tördelni pl. 1024 byte hosszú darabokra és ezt kell átküldeni a szervernek. A szerveren ugyanígy egy ciklusban kell beolvasni a byte-okat és összefűzni az 1024 byte-os darabokat.  
 + 
 +De ekkor még egy problémát meg kell oldani: honnan tudjuk hogy mekkora a tényleges méret?
tanszek/oktatas/informacios_rendszerek_integralasa/java_socket.1709325409.txt.gz · Utolsó módosítás: 2024/03/01 20:36 szerkesztette: knehez