Forum » Programiranje » [c++] Nonblocking socket - out of sync?
[c++] Nonblocking socket - out of sync?
bozjak ::
Lp!
Malo sem se začel ukvarjati z socketi, sedaj pa imam problem. Naredil sem client-server z uporabo nonblocking socketov, imam pa problem, da se pogosto izgubi kaksna crka (prva), kot da send in receive nebi bila časovno usklajena... Ker imam narejeno tako, da najprej pošlem dolžino niza, nato pa še sam niz, pogosto postane prejeti string nesmisel tako na začetku kot na koncu... Kaj bi lahko bilo krivo in s cim bi lahko to popravil?
Z blocking socketi tega problema ni bilo, zato sem razmišljal, da bi naredil z blocking socketi in vsak receive zagnal s novim threadom, a tukaj se mi pa ustavi... Ne znam odpreti novega threada v "navadnem" dos c++u (logično), z windowsi pa ne znam delati (z izjemo VC++).
Kaj lahko torej naredim, da bom kar najhitreje rešil problem?
Hvala, Lp
Malo sem se začel ukvarjati z socketi, sedaj pa imam problem. Naredil sem client-server z uporabo nonblocking socketov, imam pa problem, da se pogosto izgubi kaksna crka (prva), kot da send in receive nebi bila časovno usklajena... Ker imam narejeno tako, da najprej pošlem dolžino niza, nato pa še sam niz, pogosto postane prejeti string nesmisel tako na začetku kot na koncu... Kaj bi lahko bilo krivo in s cim bi lahko to popravil?
Z blocking socketi tega problema ni bilo, zato sem razmišljal, da bi naredil z blocking socketi in vsak receive zagnal s novim threadom, a tukaj se mi pa ustavi... Ne znam odpreti novega threada v "navadnem" dos c++u (logično), z windowsi pa ne znam delati (z izjemo VC++).
Kaj lahko torej naredim, da bom kar najhitreje rešil problem?
Hvala, Lp
http://upor.blogec.si
http://bozjak.deviantart.com
http://bozjak.deviantart.com
Pimoz ::
samo predlog...enkrat si že mel težave z bufferjem mogoče maš tud zdj :/
drgač pa nimam pojma
drgač pa nimam pojma
Jean-Paul ::
Mislim, da ti nekaj ne delaš prav, da izgubljaš črke, ker se to ne bi smelo dogajati.
Če bi želel delati kombinacijo blocking sockets s threadi, potem priporočam, da za vsakega klienta, ki se prijavi, zaženeš svoj thread.
Drugače pa je v UNIX svetu pogosta tudi kombinacija non-blocking socketov s select oz. poll klici.
Če bi želel delati kombinacijo blocking sockets s threadi, potem priporočam, da za vsakega klienta, ki se prijavi, zaženeš svoj thread.
Drugače pa je v UNIX svetu pogosta tudi kombinacija non-blocking socketov s select oz. poll klici.
bozjak ::
hvala za odgovore - in ja zavedam se, da se to nebi smelo dogajati ... Za buffer sem dokaj prepričan, da ni kriv, saj kode za branje / pisanje nisem spremenil od preskoka iz blocking na nonblocking sockete.
A pozna kdo kakšn dober tutorial, ki bi pojasnil nonblocking sockete v C++u (DOS)? Pravtako bi se zveseljem naučil uporabljati thread-e, le nekaj pomoči bi rabil (kakšna stran?) ...
Hvala za odgovore, LP
A pozna kdo kakšn dober tutorial, ki bi pojasnil nonblocking sockete v C++u (DOS)? Pravtako bi se zveseljem naučil uporabljati thread-e, le nekaj pomoči bi rabil (kakšna stran?) ...
Hvala za odgovore, LP
http://upor.blogec.si
http://bozjak.deviantart.com
http://bozjak.deviantart.com
Jean-Paul ::
Tega je na netu veliko. Poguglaj za socket programming.
Za začetek lahko pogledaš tole:
http://www.beej.us/guide/bgnet/
Za začetek lahko pogledaš tole:
http://www.beej.us/guide/bgnet/
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C] TimerOddelek: Programiranje | 1266 (947) | sas084 |
» | [Java] Multi Client chat serverOddelek: Programiranje | 2561 (1832) | javaMaster |
» | niti (threads) (strani: 1 2 )Oddelek: Programiranje | 5240 (3694) | noraguta |
» | [C++] bindOddelek: Programiranje | 1467 (1245) | fiction |
» | C: connect() funkcija, kako nastaviti timeoutOddelek: Programiranje | 1807 (1588) | fefko-the-bulldog |