|
| Q: WinSock [Vedr. SendData & Close] Fra : Jan Vinten |
Dato : 17-01-04 01:28 |
|
Hej gruppe,
Jeg har lavet et skide smart program (men det har man vel altid - nå,
men om ikke andet, så går det i alt sin simpelhed ud på, at en bruger
forbinder sig via et klient program til et server program.
Den password synkroniserer så og validerer passwordet.
Når det nu er et forkert indtastet kodeord gør jeg flg.:
sckConnection(Index).SendData "Invalid password"
sckConnection(Index).Close
Det skulle gerne sende en tekst til klienten om, at passwordet er forkert og
derefter lukke forbindelsen. Men min klient når ikke, at modtage
tekst-strengen - den lukker bare forbindelsen.
Hvad skal jeg have gang i her? Det er vel ikke noget med en "timer" osv,
vel?
Venligst opdater min uvidenhed!
/ Jan
| |
Tomas Christiansen (17-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 17-01-04 23:22 |
|
Jan Vinten skrev:
> sckConnection(Index).SendData "Invalid password"
> sckConnection(Index).Close
....
> Det skulle gerne sende en tekst til klienten om, at passwordet er forkert
og
> derefter lukke forbindelsen. Men min klient når ikke, at modtage
> tekst-strengen - den lukker bare forbindelsen.
Prøv at indsætte en DoEvents mellem SendData og Close.
-------
Tomas
| |
Jan Vinten (19-01-2004)
| Kommentar Fra : Jan Vinten |
Dato : 19-01-04 19:58 |
|
Hej Tomas,
Tak! DoEvents er selvfølgelig lige den der gør jobbet!
Jeg takker ...
/ Jan
"Tomas Christiansen" <toc-01-nospam@blikroer.dk> wrote in message
news:buccgj$1knv$1@news.cybercity.dk...
> Jan Vinten skrev:
> > sckConnection(Index).SendData "Invalid password"
> > sckConnection(Index).Close
> ...
> > Det skulle gerne sende en tekst til klienten om, at passwordet er
forkert
> og
> > derefter lukke forbindelsen. Men min klient når ikke, at modtage
> > tekst-strengen - den lukker bare forbindelsen.
>
> Prøv at indsætte en DoEvents mellem SendData og Close.
>
> -------
> Tomas
>
| |
Jesper (20-01-2004)
| Kommentar Fra : Jesper |
Dato : 20-01-04 07:55 |
|
"Jan Vinten" <ingen_email@send_kun_i_gruppen.tak> skrev i en meddelelse
news:400c28a1$0$221$edfadb0f@dread12.news.tele.dk...
> Hej Tomas,
>
> Tak! DoEvents er selvfølgelig lige den der gør jobbet!
>
Nej DoEvents er ikke den der gør jobbet. KUN på din pc.
Clienten sidder jo ikke på din pc, så derfor skal du ind i
sckConnection_SendComplete som Morten skrev.
Jesper
| |
Tomas Christiansen (20-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 20-01-04 08:20 |
|
Jesper skrev:
> > Tak! DoEvents er selvfølgelig lige den der gør jobbet!
>
> Nej DoEvents er ikke den der gør jobbet. KUN på din pc.
> Clienten sidder jo ikke på din pc, så derfor skal du ind i
> sckConnection_SendComplete som Morten skrev.
Hvad mener du med "KUN på din pc"? Enten så virker det vel, eller også gør
det ikke???
Problemet med Winsock kontrollen er, at visse ting først bliver udført, når
der udføres DoEvents (enten eksplicit eller implicit ved at der ikke er mere
at kode at udføre før næste event optræder). Derfor hjælper en DoDvents.
MEN! Det helt rigtige er, som Morten Trab foreslog, at lægge nedlukningen af
forbindelsen ind i sckConnection_SendComplete event-proceduren.
DoEvents-løsningen er kun en "lappeløsning".
-------
Tomas
| |
Jan Vinten (20-01-2004)
| Kommentar Fra : Jan Vinten |
Dato : 20-01-04 16:48 |
|
Hej Jesper,
Nu er det sådan, at jeg sender en datastreng til min klient fra serverdelen.
Når klienten modtager denne datastreng skal den returnerer et resultat.
Resultatet bliver modtaget i sckConnection_DataArrival(...). I den procedure
valider jeg dataen og hvis den data ikke er korrekt, skal den afbryde
forbindelsen til klienten.
Derfor er SendComplete ikke optimal til denne løsning... Og DoEvents gør
jobbet korrekt og det virker!
/ Jan
"Jesper" <oz5nospam@pc.dk> wrote in message
news:400cd0af$0$253$edfadb0f@dread12.news.tele.dk...
>
> "Jan Vinten" <ingen_email@send_kun_i_gruppen.tak> skrev i en meddelelse
> news:400c28a1$0$221$edfadb0f@dread12.news.tele.dk...
> > Hej Tomas,
> >
> > Tak! DoEvents er selvfølgelig lige den der gør jobbet!
> >
>
> Nej DoEvents er ikke den der gør jobbet. KUN på din pc.
> Clienten sidder jo ikke på din pc, så derfor skal du ind i
> sckConnection_SendComplete som Morten skrev.
>
> Jesper
>
>
>
| |
Tomas Christiansen (21-01-2004)
| Kommentar Fra : Tomas Christiansen |
Dato : 21-01-04 09:16 |
|
Jan Vinten skrev:
> Resultatet bliver modtaget i sckConnection_DataArrival(...). I den
procedure
> valider jeg dataen og hvis den data ikke er korrekt, skal den afbryde
> forbindelsen til klienten.
>
> Derfor er SendComplete ikke optimal til denne løsning... Og DoEvents gør
> jobbet korrekt og det virker!
Det stemmer da vist helt ikke overens med dit oprindelige indlæg?
Men bortset fra det, så bør man vente til at man ved, via de events som
Winsock-kontrollen fyrer, at "noget" er sendt før man lukker forbindelsen.
Det vil (bør) virke hver gang.
DoEvents er en løsning som i visse tilfælde KAN risikere ikke at virke. Hvis
dit program modtager andre former for events (f.eks. hvis du klikker 100
gange på diverse knapper) mens processen med at sende og efterfølgende lukke
forbindelsen er i gang, kan du risikere at programmet ikke virker efter
hensigten.
Husk også at huske på at når du har en DoEvents i din kode, så kan "alt" ske
på dette sted. Forstået på den måde, at der er mulighed for at en virlkårlig
event-procedure (undtagen den du er i gang med at udføre) vil kunne blive
udført. Det behøver ikke at være et problem, men man skal tænke på hvad der
sker, hvis f.eks. brugeren trykker på krydset i øverste højre hjørne af ens
form, mens programmet er ved at sende.
-------
Tomas
| |
Morten Trab (18-01-2004)
| Kommentar Fra : Morten Trab |
Dato : 18-01-04 00:13 |
|
"Jan Vinten" <ingen_email@send.kun.i.gruppen.tak> skrev i en meddelelse
news:40088185$0$187$edfadb0f@dread14.news.tele.dk...
> sckConnection(Index).Close
Flyttes ind i sckConnection_SendComplete istedet...Så afvikles den først når
pågældende senddata er færdig...
--
Mvh,/Best regards,
Morten Trab
Web: http://www.blackchart.dk
Ved direkte mail, fjern da REMOVE fra adressen.
| |
|
|