Forum » Programiranje » Qt in client-server komunikacija
Qt in client-server komunikacija
bitlab ::
Da ne bom celega posta pisal, bom dodal samo link na forum, kjer sem zastavil vprašanje.
link...
Mogoče se tudi tu kdo najde, ki bo vedel v čem je problem.
Hvala za pomoč
link...
Mogoče se tudi tu kdo najde, ki bo vedel v čem je problem.
Hvala za pomoč
BiTLAB, informacijska tehnologija, d.o.o.
bitlab ::
Da še malo dodam...
V ServerThread::receiveMessage() slot sem dodal števec in ugotovil, da se slot ne sproži tolikokrat kot client pošlje sporočilo.
Še vedno upam na kakšno vašo idejo.
V ServerThread::receiveMessage() slot sem dodal števec in ugotovil, da se slot ne sproži tolikokrat kot client pošlje sporočilo.
Še vedno upam na kakšno vašo idejo.
BiTLAB, informacijska tehnologija, d.o.o.
BigWhale ::
Daj se stevec v Server::fromClient(), da vidis ce server povezave sploh registrira. Naslednja stvar, daj se kako pavzo nekaj milisekund v for zanko kjer delas konekcije na server, da vidis, ce bo bolj pocasno povezovanje server obdelal.
Tretja stvar bi bila kak tcpdump, da vidis koliko paketov poslje client. Morda ti kernel izpusti kak paket in se zato server ne odzove.
Tretja stvar bi bila kak tcpdump, da vidis koliko paketov poslje client. Morda ti kernel izpusti kak paket in se zato server ne odzove.
bitlab ::
Hvala za namig (glede pavze). Če sem takoj po write() dodal eno prazno for zanko (++ 10.000x), so vsa sporočila prišla do serverja. Ampak takšna rešitev je glede hitrosti neustrezna. Mi je pa dalo misliti za nadaljno googlanje.
Problem tiči v tem, da sama write() funkcija ne pošlje podatkov direktno "na kabel" ampak jih preda kernelu (logično). Če ti podatki prihajajo do kernela prehitro (brez pavze), se jih ta odloči združiti in jih poslati v enem kosu.
Tega nisem predvidel (tako kot pri TrollTechu tega niso omenili nikjer v dokumentaciji).
Malenkost sem spremenil ServerThread::receiveMessage() (upoštevajoč zgoraj napisano) in stvar deluje.
Celotna rešitev je tukaj (če se bo slučajno kdo srečal s podobnim primerom).
Hvala za pomoč!
Problem tiči v tem, da sama write() funkcija ne pošlje podatkov direktno "na kabel" ampak jih preda kernelu (logično). Če ti podatki prihajajo do kernela prehitro (brez pavze), se jih ta odloči združiti in jih poslati v enem kosu.
Tega nisem predvidel (tako kot pri TrollTechu tega niso omenili nikjer v dokumentaciji).
Malenkost sem spremenil ServerThread::receiveMessage() (upoštevajoč zgoraj napisano) in stvar deluje.
Celotna rešitev je tukaj (če se bo slučajno kdo srečal s podobnim primerom).
Hvala za pomoč!
BiTLAB, informacijska tehnologija, d.o.o.
Tutankhamun ::
Vrjetn obstaja flush komanda ki pol pošle paketek.
AMD Phenom QUAD 9950 Black Edition, 8GB
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Socket ServerOddelek: Programiranje | 2447 (1640) | fx |
» | [Java] Multi Client chat serverOddelek: Programiranje | 2546 (1817) | javaMaster |
» | Noob se loti programiranje v BASHOddelek: Programiranje | 2273 (1673) | c3p0 |
» | Desktop aplikacije večinoma niso multithreaded??? (strani: 1 2 )Oddelek: Programiranje | 4927 (4173) | Gundolf |
» | Kako pošiljanje datotek v JAVI.Oddelek: Programiranje | 1850 (1721) | kopernik |