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

MFC CSocket i gubljenje vremena...

[es] :: C/C++ programiranje :: MFC CSocket i gubljenje vremena...

[ Pregleda: 2265 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

yooyo

Član broj: 4891
Poruke: 1101
195.252.90.*



Profil

icon MFC CSocket i gubljenje vremena...06.10.2005. u 22:14 - pre 226 meseci
Posto sam se "opekao" prilikom upotrebe ove MFC klase hteo bih da upozorim ostale da se ne nasankaju kao ja.

MFC CSocket klasa je najgori socket wrapper koji sam u zivotu video i uz to je opasno bagovit (ili je to mozda feature!?). Naime... ova klasa super radi ako je konekcija 100% stabilna, ali ako je u pitanju konekcija koja nije stabilna, onda CSocket moze da se zakuca u Send ili Receive metodi.

Fora je u tome sto je CSocket izveden iz CAsyncSocket (sto znaci da je non-blocking tipa) ali su na prljav nacin napravili da CSocket ipak bude blocking tipa. Ukratko, napravili su mrtvu petlju u Send ili Receive metodi tako da dok postoji konekcija lepo radi, ali ako konekcija pukne program nikad nece izaci iz Send ili Receive metode, jer code unutar petlje ne reaguje na gresku vec ponovo pokusava da obavi nemoguc posao!!! Ne pomaze ni postavljanje send/receive timeout-a (setsockopt, SO_SNDTIMEO ili SO_RCVTIMEO). Rezultat je zablokiran program. Naravno, kada se zablokira posle vise sati/dana rada onda to posebno "boli".

Kada sam napisao svoju socket wrapper klasu sve je proradilo i program uspesno detektuje prekid veze. Code mi nije pri ruci, ali cu ga uskoro okaciti ovde.

I CAsyncSocket je uzasno napisan. O tome ipak neki drugi put.

yooyo
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
*.broadband.blic.net.



+2 Profil

icon Re: MFC CSocket i gubljenje vremena...06.10.2005. u 22:32 - pre 226 meseci
Ja sam je koristio prije 2 godine i taj program jos radi.
Cak sam ga maltretirao tako da prekinem vezu u toku slanja ili ugasim receive proram ali nisam primjetio da se zaglavljuje.

Koju verziju Visual Studia koristis?


 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
195.252.90.*



Profil

icon Re: MFC CSocket i gubljenje vremena...07.10.2005. u 00:52 - pre 225 meseci
Kod mene zaglavljuje u sledecoj situaciji:
1. Server pozove listen pa accept
2. Klijent (CSocket klasa) pozove connect i posalje nesto (Send)
3. Veza pukne a klijent ocekuje odgovor od servera (veza moze puci bilo gde izmedju neka 2 rutera. hardware kod klijenta i servera je i dalje ispravan)
4. Klijent pozove metodu Receive i nikad nece zavrsiti posao niti ce Receive vratiti gresku (klijentov CSocket je blocking tipa).
5. Ako se desi da veza pukne izmedju connect i send klijent i dalje misli da su podaci uspesno poslati.

yooyo
 
Odgovor na temu

ljube
Ljubiša Knežević
Banjaluka

Član broj: 22429
Poruke: 158
81.93.74.*



+2 Profil

icon Re: MFC CSocket i gubljenje vremena...07.10.2005. u 07:37 - pre 225 meseci
Sorry,
malo sam pogledao kod, u mom slucaju je serverska aplikacija napisana u Win32 API a samo klijent je MFC Dll koji koristi CSocket.

Vjerovatno zato ja nisam iskusio problem koji ti opisujes.


 
Odgovor na temu

nikoladsp
nikola radovanovic
trenutno-developer
novi sad

Član broj: 5455
Poruke: 193
*.leased.neobee.net.



Profil

icon Re: MFC CSocket i gubljenje vremena...12.10.2005. u 17:08 - pre 225 meseci
potrazi post winsock problem (12.10.05) tamo sam ostavio link za jednu klasu sto koristi socket API.vrlo je jednostavna,a mozes je koristiti i iz wtl i mfc programa(a bogami i APIja)

poz
ja sam panker sa diplomom kod moje mame...
 
Odgovor na temu

[es] :: C/C++ programiranje :: MFC CSocket i gubljenje vremena...

[ Pregleda: 2265 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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