Nyilvános szöveges chat-szerver

A probléma megfogalmazása

Az elmélet része


A Berkeley socket, hogy működjön együtt a TCP már API kapcsolódni / elfogadja, hogy végre egy háromutas kézfogás, majd egy rejtett a programozó, hogy megszervezze a flow üzemmódban a szállítás ellenőrzése és az adatok sértetlenségét. A probléma az, hogy conntect / elfogadja a blokkoló hívás, és nem tud csatlakozni a több port egyszerre (egy foglalat), nem kell csinálni, és csökkenti a terhelést a számítástechnikai eszköz (fenntartása nagy kapcsolatok száma) jöttek fel kliens-szerver architektúra, ahol a szerver összesíteni minden forgalmat kell küldeni neki a különböző ügyfelek és fenntartása több kapcsolat azonos.
Két megoldás létezik a többszörös kapcsolódási / fogadási szerverek karbantartásának problémájára: többszálú és nem blokkoló aljzatok használata. Megfontolom az első esetet, mert közelebb van hozzám.

tervezés

Közvetlenül az erőforrásokhoz való hozzáférés problémájának megoldása teljesen fel van téve a használt könyvtár vállára, csak a kapott adatok feldolgozásának logikáját írja elő.

Hogy csináltam
Írni TCPConnectionHandler, először meg kell írni a ThreadPool, amely képes lenne létrehozni és megszakítani áramlások (flow és elválasztását azok között, akik képesek teljes és azok, akik a munkálatok).
A TCPConnectionHandler megnézné, hogy a kapcsolatok melyikét hajtotta végre, amely felelős a broadcast / multicast levelezésért a csatlakoztatott aljzatokhoz, és tárolja / megsemmisíti a felhasználói adatot.

Az aljzat felhasználói adatainak szerkezete meglehetősen egyszerű - becenév és csevegőszoba. amelyben ez a felhasználó található. Ezért egy ilyen mechanizmus használatának egyszerűsége, hogy létrehozzon egy szobát, csak be kell lépnie.

Micro-Admin


Szerverek igazgatása, melyek csak az nyitott kapcsolat (titkosítás nélkül) van érdemelnek külön cikket, hogyan kell építeni egy stabil rendszere az egyszeri jelszavakat és a hash parancs, de kihagyja ezt az egészet. Csak használni a lehetőséget, hogy írjon egy szöveget kulcsot, és megparancsolja neki, hogy végre (Ha a kulcs hosszát elég nagy néhány megabájt, akkor védekezhet a brute force), de nehéz, hogy megvédje magát a lehallgatást ez nagyon fontos =). De elvileg a rendszer így néz ki:

  1. A kiszolgáló kihívási számot vagy bájtkészletet hoz létre.
  2. Az ügyfél egy egyszer kulcsfontosságú kihívást tartalmaz + parancsot, és mérgezi a hash és a parancsot a tiszta.
  3. A kiszolgáló újra kihasználja a parancsot, és összehasonlítja a hash eredményét a kapott értékkel.
  4. Ha a hash érvényes, akkor a parancs végrehajtásra kerül.

Példák a parancsokra


Egy kis üdvözlő doboz.

Rejtett szöveges chat képességek


1. Hash-chatrum-adatok cseréje
Például nincs épeszű felhasználónak nem lenne ülni a chatrume nevű PbgkkCzrM8VToEgcDcCSfQdw5p1IaoRHiBu5d21XGv92c0fKmJUo3XoxFqtdN5tOzmRY5PrSQti6uKFOZTatQQ ==
De a botok rendben vannak. És változtasd ezeket a helyiségeket egy idő után.2. Átlátható titkosítás a Base64 szöveges nézetben.
Mindannyian használjuk az automatikus adat titkosítást, és hogyan lesz nosztalgikus adatküldés az olyan partnereknek, akiket előzőleg megosztott kulcsmal titkosítottak. Az anonimitás csak az ip: port (hello, i2p) és a hitelesített / hitelesített kapcsolattartókkal kötött a támogatott munkamenetben. 4. Az adatok fényessége.
Nincs további hasznos tartalom a munkamenet-támogatáshoz vagy a tartalomátvitelhez. Csak szöveges tartalom. Egy egyszerű kliens (nc, gitt, stb.) 6. A szerver könnyedsége és teljesítménye
A mákomban a használt könyvtár és kliens optimalizálások nélkül összeállítva 156 + 40 = 196 KB. Ie a régebbi eszközökön való futtatás képességét, kis mennyiségű RAM-mal és minimális támogatást nyújt a POSIX.7-hez. OpenSource - nyitottság és semmi sem felesleges. + az a képesség, hogy saját javításokat végezzenek, például titkosítást, azonosítást,
hitelesítés, fájlátvitel stb.

GitHub, de tartsa erősen benyomható távolságra a monitortól.
A CMake lehetővé teszi, hogy a platformod alatt felépüljön, és futtassa a helyi gazdagépen, a mac / linux (+ windows a jövőben a segítségednél).
Szolgáltatások igénybevételének igénybevétele.

Kapcsolódó cikkek