Šta je novo?

pitanje za mrezne programere...

rocky

Čuven
Učlanjen(a)
25.07.2003
Poruke
39
Poena
604
Problem je sledeci:
Potrebno je napraviti server koji ce odmah nakon podizanja primiti oko hiljadu zahteva za TCP konekcijom koje treba da obraditi tj. nakon odredjenog vremena sve konekcije moraju biti uspostavljene. Tada pocinje razmena podataka izmedju servera i klijenata: Server ce u svakom trenutku primati par stotina poruka od razlicitih klijenata. Pri tome treba naglasiti da ce poruke koje se razmenjuju izmedju servera i klijenta biti kratke(desetak bajtova). Kada procita poruku od klijenta server ce je obraditi i poslati 5 poruka ka 5 drugih klijenata i to na osnovu definisanog pravila. Takodje, potrebno je obezbediti ponovno uspostavljanje konekcije ako se konekcija sa nekim klijentom prekine iz nekog nepoznatog razloga i to treba da se ostvari automatski.
Dakle, potreban mi je savet o koncepciji softvera i alatu kojim se ovo moze najbolje ostvariti. U obzir dolaze Windows Sockets API i MFC(CSocket i CAsyncSocket klase). Dobro bi mi dosao i neki primjer slicnog programa. Pomagajte!
 
Kratko i jasno.. IOCP, tj. IO Completion Ports.
Pogledaj www.codeproject.com i MSDN.

http://www.codeproject.com/internet/iocp.asp
http://msdn.microsoft.com/library/d...ry/en-us/fileio/fs/createiocompletionport.asp

Nemoj se zbuniti u MSDN-u, jer se IOCP moze koristiti i za druge stvari (npr. paralelno kopiranje fajlova sa razlicitih medija)

Ima tu jos jedna "sitnica", a to je dizajn servera. Kada je u pitanju mali broj konekcija, obicno se odvoji po jedan thread za svakog klijenta da obavlja posao. U tvom slucaju, tako nesto bi bilo ubistveno po performanse sistema. Zato je bolje napraviti thread-pool sa N threadova pa ce server kad stigne zahtev to ubaciti u queue za obradu, a prvi slobodan thread ce ga pokupiti i odraditi posao.


yooyo
 
Vrh Dno