Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

pitanje za mrezne programere...

[es] :: C/C++ programiranje :: pitanje za mrezne programere...

[ Pregleda: 3218 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dubrava

Član broj: 35848
Poruke: 38
*.eunet.yu.



Profil

icon pitanje za mrezne programere...23.08.2005. u 10:23 - pre 227 meseci
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!
 
Odgovor na temu

obucina

Član broj: 38191
Poruke: 723

Jabber: obucina


+7 Profil

icon Re: pitanje za mrezne programere...24.08.2005. u 10:04 - pre 227 meseci
Server se dize i salje BROADCAST ili MULTICAST paket.

Klijenti je prime, svaki sebi odredi random timeout, npr od 1 do 5 sekundi i nakon timeout-a pokusava da se poveze. Na ovaj nacin nemas preopterecenje u vidu hiljadu istovremenih zahteva.

Zatim jos npr 2 puta ponovis BROADCAST ili MULTICAST paket, da bi se eventualno nepovezani povezali.

Asinhrono pratis promene na socket-ima. Gde se veza prekine, tu se povezes ponovo. Povremeno ponavljas ove BROADCAST ili MULTICAST pakete, da bi se novopridosle masine povezale.

Posto su ti paketi mali, mozda mozes da radis i sa UDP protokolom.

Naravno, da bi ti broadcast radio, moras biti na privatnoj mrezi. Ako pises program za internet, ne mozes koristiti BROADCAST ili MULTICAST.

 
Odgovor na temu

_VampiR_
Dejan Menges
Sarajevo, BiH

Član broj: 51402
Poruke: 83
217.199.128.*



Profil

icon Re: pitanje za mrezne programere...24.08.2005. u 10:05 - pre 227 meseci
Hmmmm, radio sam slicne stvari ali na unixu... A na Win platformi malo mi je i nelogicno raditi takav vid servera, pogotovo sto je velika sansa da padne prilikom "bombardovanja" portova sa toliko klijentskih masina...
:: Don't drink contaminated water - drink beer ::
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.dyn.optonline.net.



+6 Profil

icon Re: pitanje za mrezne programere...24.08.2005. u 11:35 - pre 227 meseci
Zaboravi MFC klase. Za tako nešto moraš da koristiš IO Completion ports i AcceptEx. Googlaj malo, ili ako te ne mrzi pogledaj kako je to odrađeno u Apache 2.0 za Windows.


 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.bowneglobal.com.



+6 Profil

icon Re: pitanje za mrezne programere...24.08.2005. u 13:26 - pre 227 meseci
E, da! Možda ne bi bila loša ideja da pogledaš ACE:

http://www.cs.wustl.edu/~schmidt/ACE.html
 
Odgovor na temu

dubrava

Član broj: 35848
Poruke: 38
*.eunet.yu.



Profil

icon Re: pitanje za mrezne programere...24.08.2005. u 14:35 - pre 227 meseci
Izgleda da je IO Completion ports jedino prihvatljivo resenje s obzirom da je to preporuka koju sam dobio na 90% foruma na kojima sam postavljao ovo pitanje, i nasih i stranih. Bilo koji drugi alat s obzirom na zahteve aplikacije izgleda ne pije vodu. Hvala na preporukama!
 
Odgovor na temu

mipko

Član broj: 11015
Poruke: 109
217.24.20.*



Profil

icon Re: pitanje za mrezne programere...26.08.2005. u 23:43 - pre 227 meseci
Iz licnog iskustva definitivno i jedino Async. I/O with completion port.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
*.dyn.optonline.net.



+6 Profil

icon Re: pitanje za mrezne programere...27.08.2005. u 01:01 - pre 227 meseci
Citat:
mipko: Iz licnog iskustva definitivno i jedino Async. I/O with completion port.


Čisto da ne bude zabune, async socket su nešto drugo (šalju WM poruke). Ovo o čemu pričamo je overlapped IO i completion port.
 
Odgovor na temu

dubrava

Član broj: 35848
Poruke: 38
*.eunet.yu.



Profil

icon Re: pitanje za mrezne programere...29.08.2005. u 10:23 - pre 226 meseci
Ja sam to nekako ovako ukapirao: U slucaju IO completion porta vrsi se provera da li postoji nesto u njegovom redu za cekanje ali se provera vrsi neprekidno i slobodni thread-ovi obradjuju pakete. Jedino u slucaju da je zauzet citav thread pool thread koji je poslednji prihvatio zahtev prihvata i sledece pakete.
 
Odgovor na temu

[es] :: C/C++ programiranje :: pitanje za mrezne programere...

[ Pregleda: 3218 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.