From: <ta...@we...> - 2003-03-26 20:42:50
|
On Wed, Mar 26, 2003 at 03:04:39PM +0100, Kouba Tomas wrote: > Zdravim a preji pekny den, > > Dialogus.net bude obsahovat mnoho serveru (a klientu), kteri budou pres > TPC/IP sokety prijimat prikazy. Napr. prijem emailu, POP3, LDAP, IMAP4 apod. > (klient: odesilani emailu). Pokud vim, tak vsechny tyto servery (mozna i > klienti) prijimaji radkove prikazy pres TCP/IP v textovem formatu: > > 1. otevre se novy soket na portu serveru; > 2. vytvori se spojeni; > 3. zpracovavaji se prikazy od klienta; > 4. ukonci se spojeni. > > Asi by na to mela existovat trida, ktera by toto vsechno delala, ale mela > drobne upravy pro jednotlive sluzby (soket, seznam prikazu a jejich > zpracovani, apod.) > > Jak na ni? No ono to neni vubec jednoduche, jak by na prvni pohled mohlo vypadat. Takze nejdriv zakladni pozadavky rozdelene podle funkcionality: Prace se socketem: 1. Trida si zaregistruje Serverovy socket a povesi se na nej. 2. Socket musi jit uvolnit a rebindovat si jiny. 3. Vse musi byt hezky konfigurovatelne Cteni textovych prikazu: tady je optreba si rici, co maji vsechny ty protokoly spolecne. Podle mne pouze to, ze jsou textove a tudiz jejich spolecne rozhrani je totozne s praci s textovymi soubory - nacti radek a spracuj jej. Mame tedy dve tridy - jedno je skutecna trida, ktera ma jako svou polozku ServerSocket a jeji metody s nim pracuji. Druhou tridou je pouze rozhrani, ktere ma zatim jedinou metodu - processLine(). Implementace tohoto rozhrani si budou drzet vnitrni stav a podle toho se budou rozhodovat, co s danym radkem udelat - je to prikaz, jsou to data,... No, pak je samozrejme treba jeste ukoncit spracovani vystupu, takze mame jeste metodu close(). Prvni trida ve svem konstruktoru dostane implementaci tridy druhe. Toto je prvni nastrel ukazky, jak navrhovat objekty. V zaklade je totiz treba mit na pameti dve veci: zapouzdreni elementarni funkcionality dusledna snaha o navrh znovupouzitelnych komponent. Pred vlastnim programovanim je treba si rict (k temto tridam): - jak bude udelana konfigurace - jak bude naimplementovan kazdy protokol - jak bude udelan vystup z onech handleru protokolu No a pak uz muzete zacit s prvni casti programovani, s obecnou tridou na spravu serveroveho socketu a prototypu tridy na cteni protokolu (klidne pro zacatek jenom echo) Oto 'tapik' Buchta |