» »

[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
http://upor.blogec.si
http://bozjak.deviantart.com

Pimoz ::

samo predlog...enkrat si že mel težave z bufferjem mogoče maš tud zdj :/
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.

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
http://upor.blogec.si
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/


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[C] Timer

Oddelek: Programiranje
101265 (946) sas084
»

[Java] Multi Client chat server

Oddelek: Programiranje
262561 (1832) javaMaster
»

niti (threads) (strani: 1 2 )

Oddelek: Programiranje
775240 (3694) noraguta
»

[C++] bind

Oddelek: Programiranje
61467 (1245) fiction
»

C: connect() funkcija, kako nastaviti timeout

Oddelek: Programiranje
231807 (1588) fefko-the-bulldog

Več podobnih tem