Avatar billede angelod Novice
19. februar 2003 - 12:11 Der er 4 kommentarer og
1 løsning

Problemer med asynkron overførsel i TIdNNTP

Okay, dette problem har top prioritet hvad angår mig.. Jeg kan ikke finde ud af hvad i alverden der er gået galt, og opgaven skal være klar til aflevering i går..

Mit problem er, at jeg har siddet og udviklet noget software der benytter NNTP klient komponenten fra Indy, og indtil nu har det gået genialt godt.. Der er imidlertid opstået et problem som jeg bare ikke kan finde ud af, nemlig at overførslen ser ud til a foregå asynkront nu, hvilket jo gør at Delphi modtager en masse svar fra serveren som markeres som ubrugelige, hvor det egentlig bare er rester fra tidligere kald..

Jeg har prøvet at bruge en nyhedslæser, og den kører lystigt, så det er altså et eller andet i mit program. Det underlige er, at det virkede før, men så stoppede det pludselig med at fungere efter hensigten, og uden at jeg har ændret noget på de dele der ellers ser ud til at kunne være problemet.

Jeg vil lige bringe et lille uddrag fra en logfil, for at vise hvad problemet er. De 'encodede' områder bliver skrevet som <encoded> for at mindske størrelsen af dette.

------- START --------
Sent 18-02-2003 18:51:10: BODY 43754<EOL>
Recv 18-02-2003 18:51:10: 222 43754 <1ok15vobkb4g0hddflnhg57e3jidc2t0g8@4ax.com> body<EOL><encoded>
Sent 18-02-2003 18:51:10: BODY 43758<EOL>
Sent 18-02-2003 18:51:10: BODY 43759<EOL>
Sent 18-02-2003 18:51:10: BODY 43760<EOL>
Sent 18-02-2003 18:51:10: BODY 43761<EOL>
Sent 18-02-2003 18:51:10: BODY 43756<EOL>
Sent 18-02-2003 18:51:10: BODY 43762<EOL>
Sent 18-02-2003 18:51:10: BODY 43763<EOL>
Recv 18-02-2003 18:51:10: <encoded>
-------  END  --------

Så please, hjælp mig med det her.. Jeg ville give flere point hvis jeg måtte, men det må jeg som sagt ikke, så jeg håber de 200 her er nok.
Avatar billede angelod Novice
19. februar 2003 - 12:14 #1
Det skal lige siges at jeg har min TIdNNTP komponent sat til et ReadTimeOut på 20000 (altså 20 sekunder), og en IdAntiFreeze med IdleTimeOut sat til 5000 (halvt sekund) og OnlyWhenIdle sat til False.
Avatar billede dkn Nybegynder
19. februar 2003 - 16:39 #2
...IdAntiFreeze med IdleTimeOut sat til 5000 (halvt sekund)...  Det er vel 5 sec du mener?
Avatar billede siz23 Nybegynder
19. februar 2003 - 16:41 #3
jeg kunne forstille mig, at det har noget at gøre med din antifreeze.
da den søger for at din GUI ikke fryser, det vil sige at du kunne bede din NNTP client om at henter flere gange samtidigt, dette vil ligne async overførelse, da du så for flere data ind samtigigt, men i virkligheden er det bare componentet der henter flere data'er fx. først det ene sted også det andet også det første igen.
Men om det er det der er problemmet, har jeg ingen anelse om, men jeg håber du kunne bruge det til noget.
Avatar billede angelod Novice
19. februar 2003 - 17:07 #4
dkn > Ja selvfølgelig.. Jeg havde den sat til 50ms før, men prøvede at hæve den til 5000ms, hvilket ikke gjorde anden forskel end at låse systemet mens den henter.

siz23 > Jeg tror nu ikke ligefrem at det er min AntiFreeze.. Jeg er ved at finde ud af om det simpelthen er min ReadTimeout der er for lille.. Noget kunne tyde på det, da den modtager exceptions for timeout.
Avatar billede angelod Novice
18. marts 2003 - 13:17 #5
Jeg omskriver hele projektet til at bruge en komponent der virker bedre end Indy gør.. Hvis jeg kunne få ind i hovedet hvordan Threads virker, så kunne jeg måske have brugt det, men desværre ikke, så jeg må jo klare mig på andre måder..

Lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester