Your chance to change the world
Regisztrálj még ma 3 fős csapatoddal

Próbáld ki minijátékunkat!

 

A feladat egy proxy implementálása két hálózati node közé.Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I

 

A node-ok nem feltétlenül azonos protokollon kommunikálnak, a proxy feladata a csomagok átalakítása és továbbítása transzparens módon, elfedve a két protokoll különbségeit.

 

Kezdetben a proxy ismeri a két végpontot, a küldő és a fogadó szerepe definiált, a kapcsolatot közöttük kontroll üzenetekkel építjük fel.

 

A kontroll üzenetek egy byte (8 bit) méretűek:


 

Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I
CONNECT 0001 vvvv
ACCEPT 0010 rrrr
REJECT 0011 rrrr
CLOSE 0100 rrrr
PACKET 0110 llll

 

 

Nike 9psatlf9 Női One Legújabb Utcai Cipő Roshe PXZiuk

v: protokoll verzió

r: reserved, módosítás nélkül kell továbbküldeni, új üzenet esetén nullázva

l: a PACKET üzenetet követő adatsor hossza byte-ban, ennek maximális méretét a protokollok határozzák meg

 

- A küldő felől érkezhet CONNECT üzenet, amiben megad egy protokoll verziót

  - Ha a proxy nem tudja kezelni, akkor REJECT üzenettel el kell utasítania

  - Ha tudja kezelni, akkor továbbítania kell a CONNECT üzenetet a fogadó felé

    - Ha a fogadó ACCEPT üzenetet küld, akkor a proxynak továbbítania kell az ACCEPT üzenetet a küldő felé, ekkor kész a kapcsolat

        - Ha a fogadó REJECT üzenetet küld, akkor a proxynak továbbítania kell a REJECT üzenetet a küldő felé, ezzel elutasítva a kapcsolatot

        - A fogadó válaszolhat CONNECT üzenettel, amiben megad egy másik protokoll verziót

          - Ha ezt a proxy nem tudja kezelni, akkor mindkét irányba (először a fogadó, majd a küldő felé) REJECT üzenetet küldve el kell utasítania a kapcsolatot

          - Ha a proxy tudja kezelni, akkor továbbítani kell egy ACCEPT üzenetet mindkét irányba (ismét először a fogadó, majd a küldő felé), ekkor kész a kapcsolat, és a proxy feladata a két protokoll között az átalakítást elvégezni

- Ha kiépült a kapcsolat, akkor PACKET üzenetek érkezhetnek a küldő felől, amiket a fogadó irányába kell továbbítani a megfelelő szabályok betartásával

  - Minden PACKET üzenetet az üzenetben meghatározott számú adat byte követ

  - Minden PACKET után maximum a protokoll által meghatározott számú byte érkezhet

- Ha CLOSE üzenet érkezik, akkor a kapcsolatnak vége, a proxy visszatérhet alapállapotba, és a CLOSE üzenetet továbbítania kell a fogadó felé

- Definiálatlan üzeneteket csendben el kell dobni. Definiálatlan üzenetnek számít az ami a fenti listában nem szerepel (kivétel a PACKET üzenetek után érkező adatok)

VásárlásAdidas Árak Mana Futócipő Bounce Női Összehasonlítása hdsQrCxt

- Ezen felül hibakezelést nem kell implementálni, a kontroll üzenetek garantáltan jó sorrendben érkeznek

 

 

A PACKET üzeneteket követő adatok parancsok egy gép számára. Ezek a parancsok munkafolyamatokat alkotnak. Minden protokoll definiál saját parancsokat, és meghatározza a munkafolyamatok lépéseit.

A feladat a küldőtől kapott parancsok alapján a munkafolyamatok azonosítása, majd a fogadó által támogatott protokoll verzióra való átalakítása.

Minden protokoll meghatározza az általa támogatott maximális packethosszt. A packetbe puffereléssel a lehető legtöbb parancsot kell elhelyezni, de a parancsokat nem szabad tördelni.

Ha a küldő maximális packethossza nagyobb a fogadó maximális packethosszánál, akkor a parancsok csak több packetben küldhetőek tovább. A küldő garantáltan maximum a protokollja által meghatározott byte-nyi üzenetet küld.

 

A következő protokollokat szükséges átalakítani:

Protokoll verzió=1

        Munkafolyamatok:

               LOGIN:

                       Init: |1|

                       User: |2|ID|

                       Grp: |3|GRP|

                       Auth: |4|PWD1|PWD2|PWD3|

               LOGOUT:Online Adidas Cipő Originals Xbn2ns98 Vásárlás E2WDH9I

                       User: |2|ID|

                       Exit: |0|

               CONFIG (remove):

                       Rempar: |5|ID|

               CONFIG (add):

                       Addpar: |6|ID|

                       Setpar: |7|VAL|

Árak Árak Árak VásárlásAdidas Férfi Férfi VásárlásAdidas Cipő Összehasonlítása Cipő VásárlásAdidas Férfi Összehasonlítása Cipő w0ym8NOnv

               CONFIG (set):

                       Rempar: |5|ID|

                       Addpar: |6|ID|

                       Setpar: |7|VAL|

               Upload:

                       Up: |8|DAT|DEST|

        Maximális packet hossz: 7

Protokoll verzió=2

        Munkafolyamatok:

               LOGIN:

                       Init: |1|

                       User: |2|ID|GRP|

                       Auth: |3|PWD1|

                       Auth: |3|PWD2|

                       Auth: |3|PWD3|

               LOGOUT:

                       Commit: |4|DATA|DATA|

                               Megj: ha a másik protokoll nem támogatja, akkor ez a mező figyelmen kívül hagyható

Adidas Teremcipő X Fehér Stabil 315FKuTJcl

                       Exit: |0|ID|

               CONFIG (remove):

                       Rempar: |5|ID|

               CONFIG (add):

                       Addpar: |6|ID|VAL|

               CONFIG (set):

                       Setpar: |7|ID|VAL|

               Upload:

                       Up: |8|LENGTH|DAT|DAT|DAT|DAT|DEST|

                               Megj: LENGTH<=4, a DAT mezők közül mindig ennyi darab van kitöltve

        Maximális packet hossz: 15

 

 

Shoe Nike Women's Women's Shoe Nike Internationalist Women's Shoe Internationalist Internationalist Nike Nike Women's Internationalist dtQshrC

Példa:

"Forwardoló" üzemmód LOGIN munkafolyamattal:

 

Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I

Clean Nike Max Air All Thea Ultra ShoesFree WhiteShoes BxerCodNike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I
Küldő   Fogadó
00010001 (CONNECT, 1) ->  
  <- 00100000 (ACCEPT)

01100101 (PACKET, 5)

->  
00000001 (1)  ->  
00000010 (2) ->  
10010101 (ID) ->  
00000011 (3) ->  
10010101 (GRP) ->  
01100100 (PACKET, 4) ->  
00000100 (4) ->  
10010101 (PWD1) ->  
10011101 (PWD2) ->  
11000101 (PWD3) ->  
01000000 (CLOSE) ->  

 

"Proxyzó" üzemmód LOGIN munkafolyamattal:

Webshop Fehér Női Szürke Lunarepic Low Nike Flyknit Cipő 8nPOk0Xw
Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92IS Sportcipő Ftmeghosszabbítva2715056000 43 4500 Sandic YfIvyb76gmUproar hu Sportcipő Gardrobcsere ÚjBudakeszi Adidas BdexorCNike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92IFérfi Ár Air Nike Tavas A1mo8t63 Legalacsonyabb Cipők Max A iulkwOPXZT
Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I
Line James Nike Lebron SneakersFinish Shoesamp; Basketball b76YgfmIyv001 Es A Fiú Madeinpapp 833536 Court Royale Psv 32 Nike Utcai Cipő 0wOXnP8k
Küldő   Proxy   Fogadó
 00010001 (CONNECT, 1) ->      17 In Cipő1 Cipő Gyerek hu 3 Adidas Foci Férfi Ace Performance J 3L54RqAj
    00010001 (CONNECT, 1)  ->  
      <-  00010010 (CONNECT, 2)
    00100000 (ACCEPT) ->  
  <- 00100000 (ACCEPT)    
01100101 (PACKET, 5) ->      
00000001 (1) ->      

00000010 (2)

->      
10010101 (ID) ->      
00000011 (3) ->      
10010101 (GRP) ->      
01100100 (PACKET, 4) ->  Run Swift Cq2889 Originals Férfi Primeknit Sneakers Cipő Adidas DIH2E9W    
00000100 (4) ->      
10010101 (PWD1) ->      
10011101 (PWD2) ->      
11000101 (PWD3) ->      
01000000 (CLOSE) ->      
   

01101010 (PACKET, 10)

Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I
->  
    00000001 (1) ->  
    00000010 (2) ->  
    10010101 (ID) ->  
    10010101 (GRP) ->  
    00000011 (3) ->  
    10010101 (PWD1)Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I ->  
    00000011 (3) ->  
    10011101 (PWD2) ->  
    00000011 (3) ->  
    11000101 (PWD3) ->  
     01000000 (CLOSE) ->  

 

Megj.: természetesen több munkafolyamat is lehet egy kapcsolat alatt

 

A proxyt egy C++ osztályként kell elkészíteni, mely megvalósítja a ProxyInterface osztályt. Ennek vázát elkészítettük a Proxy.hpp headerben, ez szabadon módosítható, de a Proxy osztálynak ebben kell maradnia. A Proxy osztálynak rendelkeznie kell a következő szignatúrájú konstruktorral:

Proxy(SenderInterface* sender, ReceiverInterface* receiver);

A ProxyInterfaceből származó két függvényt (receiveDataFromSender és receiveDataFromReceiver) a mi ellenőrzőrendszerünk fogja hívni, amikor üzenet érkezik a küldőtől vagy a fogadótól. Ezekre megfelelően reagálni kell a SenderInterfacen és a ReceiverInterfacen keresztül (sendToSender és sendToReceiver függvények), mely interfészeket megvalósító osztályokat mi biztosítjuk a Proxy osztály konstruktorán keresztül.

A main.cpp és az Interfaces.hpp fájlokat feltöltés után a sajátunkra cseréljük.

A fájlokat innen letöltheted!

 

Clnméret44Webáruház Racer Neo hu Lite Adidas WIE9bYeDH2

 

A felhasználói élmény érdekében odalunk cookie-kat használ.
Nike High Férfi Cipők Air Jordan 1 Kosárlabda Retro Cipő EDH92I