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

Odvratan problem sa stringom i winsocket-om

[es] :: C/C++ programiranje :: Odvratan problem sa stringom i winsocket-om

[ Pregleda: 2179 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Hallman
Bojan Sala
Beograd, V. Banja

Član broj: 17191
Poruke: 24
*.48.EUnet.yu

Sajt: www.univerzalsoft.com/hs/..


Profil

icon Odvratan problem sa stringom i winsocket-om21.02.2004. u 14:01 - pre 245 meseci
Problem je sledeci:
Koristim obicnu CSocket klasu kako bih napravio program za otvaranje sadrzaja mail servera. Znaci sve lepo radi, konektujem se, aktivira se "OnRecieve" event, kreiram "CString data" pa zatim pokusam da preuzmem sarzaj sledecom metodom (naravno unutar OnRecieve):
ret = this->Receive (data.GetBuffer (256), 256);
Ja dobijem ono sto sam ocekivao "+OK", ali nije bas tako. Verovatno zbog memorije, na kraju stringa (bilo CString ili obican char, sa pokazivacem ili ne... opet isto) dobijem ovo:
+OK
ĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚĚ
Sto je vrlo nezeljen rezultat, ovo ispod je spojeno sa stringom ali nije deo njega, za duzinu stringa mi daje 0, standardne funkcije klase CString ne funkcionisu (ne rade bas nista). Duzina te mrlje ispod varira u zavisnosti od same velicine promenljive, i od 2. parametra funkcije Recieve (256 u ovom slucaju). Znam c++ tek neke dve nedelje, poznajem turbo c, i vb odlicno, pa me ovo zbunjuje, jer se ta mrlja uvek prikazuje zajedno sa stringom ali ne postoji u njemu (ne moze se ukloniti nikako). Cak kada kopiram taj CString u nesto drugo (recimo char[3]) dobijam ISTO to, iako taj char ima samo 3 slobodna mesta. Mozda je ovo standardna glavobolja c++ stringova, a mozda i neki winsocket bug zbog loseg rukovanja (samo sam ga napravio, i konektovao se, sta lose moze da bude...). A povratna vrednost funkcije daje duzinu stringa (5 tj. 3 vidljiva karaktera ovde), ali ne vredi kad mi ubaci ovaj "bug" us string, ironija.
POMAGAJTE !
 
Odgovor na temu

filmil
Filip Miletić
Oce Technologies B.V., inženjer
hardvera
Arcen, NL

Član broj: 243
Poruke: 2114
*.adsl.zonnet.nl

Jabber: filmil@jabber.org
ICQ: 36601391


+3 Profil

icon Re: Odvratan problem sa stringom i winsocket-om21.02.2004. u 15:01 - pre 245 meseci
Da li možeš da pošalješ najkraći mogući kod koji pokazuje gde je
problem? Malo šta se može zaključiti metodom „gledanja u ništa“.

Evo međutim nekoliko primedbi dobijenih metodom „gledanja u ništa“:

Da li si pogledao šta tačno rade metode Receive i GetBuffer? Da
li uvek vraćaju tačno onoliko bajtova koliko si tražio (256) ili možda
vraćaju uredno formatiran CString? Da li si siguran da data.GetBuffer()
koristiš na pravi način, ja recimo nisam.

To što je neka promenljiva char[3] ne sprečava da na to mesto upišeš
koliko god hoćeš znakova. Mali je problem što će to upisivanje da
potamani sve nesrećne promenljive koje su se u memoriji našle iza tog mesta.

f
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.sbb.co.yu



Profil

icon Re: Odvratan problem sa stringom i winsocket-om22.02.2004. u 22:20 - pre 245 meseci
Ako imas MSDN pogledaj primer u CAsyncSocket::OnReceive.

yooyo
 
Odgovor na temu

[es] :: C/C++ programiranje :: Odvratan problem sa stringom i winsocket-om

[ Pregleda: 2179 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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