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