/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Detektering af winsocket.close !?
Fra : Lasse Madsen


Dato : 04-01-06 16:34

Hejsa.

Jeg har lavet et server program der kører TCP/IP med winsock.listen... dette
fungere også rigtigt godt jeg kan både få mine klienter til at forbinde og
sende/modtage data.
men hvis jeg så flår netværksstikket ud af klient maskinerne eller bare
lukker klient programmerne detektere min server ikke dette...

Jeg har så prøvet at lave en timer der hvert 5 sekund sender
winsock.send(chr$(&H0)) for at prøve at se om det ville lave en error som
jeg så kunne detektere på og lukke forbindelsen og starte listen igen
dette fungere dog også men der går op mod 2 minutter før winsock finder ud
af at forbindelsen er gået ned

Hvordan kan jeg detektere at stikket til klienterne er flået ud på en eller
anden måde ?

M.v.h.
Lasse Madsen



 
 
Harald Staff (05-01-2006)
Kommentar
Fra : Harald Staff


Dato : 05-01-06 00:33

Hei Lasse

Test på state-property:

Select case Winsock1.State
Case 0
'Closed
Case 1
'open, ok
Case 8
'Peer is closing the connection
Case else
'some problem, see Help on this

HTH. Beste hilsen Harald

"Lasse Madsen" <lm@hagen.dk> skrev i melding
news:43bbeafc$0$67259$157c6196@dreader2.cybercity.dk...
> Hejsa.
>
> Jeg har lavet et server program der kører TCP/IP med winsock.listen...
dette
> fungere også rigtigt godt jeg kan både få mine klienter til at forbinde og
> sende/modtage data.
> men hvis jeg så flår netværksstikket ud af klient maskinerne eller bare
> lukker klient programmerne detektere min server ikke dette...
>
> Jeg har så prøvet at lave en timer der hvert 5 sekund sender
> winsock.send(chr$(&H0)) for at prøve at se om det ville lave en error som
> jeg så kunne detektere på og lukke forbindelsen og starte listen igen
> dette fungere dog også men der går op mod 2 minutter før winsock finder ud
> af at forbindelsen er gået ned
>
> Hvordan kan jeg detektere at stikket til klienterne er flået ud på en
eller
> anden måde ?
>
> M.v.h.
> Lasse Madsen
>
>



Lasse Madsen (05-01-2006)
Kommentar
Fra : Lasse Madsen


Dato : 05-01-06 09:23

Hej Harald.

Jeg gør p.t. således i en timer der kører hvert sekund...

Select Case gateway(i).State
Case sckClosed
strState = "Forbindelse afbrudt"
Case sckOpen
strState = "Forbindelse klar..."
Case sckListening
strState = "Venter på forbindelse..."
Case sckConnectionPending
strState = "Forbereder data udvæksling"
Case sckResolvingHost
strState = "Forespørger vært..."
Case sckHostResolved
strState = "Vært forespurgt"
Case sckConnecting
strState = "Forbinder til ECU-9401"
Case sckConnected
strState = "Forbunden korrekt"
Case sckClosing
strState = "ECU-9401 har lukket forbindelsen"
Case sckError
strState = "Fejl på forbindelsen mellem ECU-9401 og pc"
gateway(i).Close
gateway(i).Listen
End Select

Hvor gateway(i) er winsock komponenten.

Dette fungere ikke ordentligt der går alt for lang tid (2 minutter ca.) før
den detektere at forbindelsen er afbrudt. jeg har i samme timer prøvet at
indsætte gateway(i).senddata (chr$(&H0)) i "sckConnected" casen så den burde
fange at der er noget galt hurtigt men dette virker heller ikke efter
hensigten...

Nogen bud?

M.v.h.
Lasse Madsen



Ulf (05-01-2006)
Kommentar
Fra : Ulf


Dato : 05-01-06 20:45

Hej Lasse,

Jeg har aldrig selv brugt winsock i mine programmer, men jeg går ud
fra at man kan pinge klienterne for at se om de stadig er der? Der får
man jo svar næsten med det samme.

MVH
Ulf


On Thu, 5 Jan 2006 09:22:57 +0100, "Lasse Madsen" <lm@hagen.dk> wrote:

>Hej Harald.
>
>Jeg gør p.t. således i en timer der kører hvert sekund...
>
> Select Case gateway(i).State
> Case sckClosed
> strState = "Forbindelse afbrudt"
> Case sckOpen
> strState = "Forbindelse klar..."
> Case sckListening
> strState = "Venter på forbindelse..."
> Case sckConnectionPending
> strState = "Forbereder data udvæksling"
> Case sckResolvingHost
> strState = "Forespørger vært..."
> Case sckHostResolved
> strState = "Vært forespurgt"
> Case sckConnecting
> strState = "Forbinder til ECU-9401"
> Case sckConnected
> strState = "Forbunden korrekt"
> Case sckClosing
> strState = "ECU-9401 har lukket forbindelsen"
> Case sckError
> strState = "Fejl på forbindelsen mellem ECU-9401 og pc"
> gateway(i).Close
> gateway(i).Listen
> End Select
>
>Hvor gateway(i) er winsock komponenten.
>
>Dette fungere ikke ordentligt der går alt for lang tid (2 minutter ca.) før
>den detektere at forbindelsen er afbrudt. jeg har i samme timer prøvet at
>indsætte gateway(i).senddata (chr$(&H0)) i "sckConnected" casen så den burde
>fange at der er noget galt hurtigt men dette virker heller ikke efter
>hensigten...
>
>Nogen bud?
>
>M.v.h.
>Lasse Madsen
>


Harald Staff (05-01-2006)
Kommentar
Fra : Harald Staff


Dato : 05-01-06 22:12

Hmmm .. "Listen" er vel en passiv ting som ikke kan fortutsettes å forstå
at der er noe galt dersom ingen kaller, så dette kan muligens ikke en server
gjøre ?

Beste hilsen Harald

> Dette fungere ikke ordentligt der går alt for lang tid (2 minutter ca.)
før
> den detektere at forbindelsen er afbrudt. jeg har i samme timer prøvet at
> indsætte gateway(i).senddata (chr$(&H0)) i "sckConnected" casen så den
burde
> fange at der er noget galt hurtigt men dette virker heller ikke efter
> hensigten...
>
> Nogen bud?
>
> M.v.h.
> Lasse Madsen
>
>



StoneWare (06-01-2006)
Kommentar
Fra : StoneWare


Dato : 06-01-06 07:10

>
> Hvordan kan jeg detektere at stikket til klienterne er flået ud på en
> eller anden måde ?

Det er windows der holder den åben i ca 2 minutter.........windows har en
release på winsock på ca 2 minutter........det kan du mig bekendt ikke ændre
på............hvis du løser dette problem med at windoze har en 2 min.
release må du MEGET gerne oplyse hvordan........



Tomas Christiansen (10-01-2006)
Kommentar
Fra : Tomas Christiansen


Dato : 10-01-06 22:47

Lasse Madsen skrev:
> men hvis jeg så flår netværksstikket ud af klient maskinerne eller
> bare lukker klient programmerne detektere min server ikke dette...

Implementer din egen protokol oven på TCP/IP-protokollen.

Send noget bestemt og forvent et bestemt svar.
Kommer svaret ikke, må modparten være forsvundet/lukket/brændt af...

Du bør altså sende "noget" (en byte eller to) som fortæller hvad der nu
kommer og evt. også et felt til angivelse længden på det der sendes.

Det giver mulighed for at sende dine egne "ping" pakker, data-pakker og
hvad du nu ellers måtte finde på i fremtiden, og det giver et oplagt
mulighed for at sende information om versionsnumre til hinanden, så du kan
opgradere server og klienter uafhængig af hinanden (ja, det er selvfølgelig
dig som skal lave alt kodearbejdet for at få det til at virke).

-------
Tomas

Kurt Pedersen (16-02-2006)
Kommentar
Fra : Kurt Pedersen


Dato : 16-02-06 00:50

Davs.

Når .close kommandoen bruges i Winsock, lukkes forbindelsen, og så aktiveres
proceduren Winsock_Close.
Dobbeltklik på Winsock komponentet og vælg Close proceduren...

Hilsen Morten.



"Tomas Christiansen" <toc-01-nospam-removethisword@blikroer.dk> skrev i en
meddelelse news:Xns9747E7CDD79DEtomascdenmark@127.0.0.1...
> Lasse Madsen skrev:
>> men hvis jeg så flår netværksstikket ud af klient maskinerne eller
>> bare lukker klient programmerne detektere min server ikke dette...
>
> Implementer din egen protokol oven på TCP/IP-protokollen.
>
> Send noget bestemt og forvent et bestemt svar.
> Kommer svaret ikke, må modparten være forsvundet/lukket/brændt af...
>
> Du bør altså sende "noget" (en byte eller to) som fortæller hvad der nu
> kommer og evt. også et felt til angivelse længden på det der sendes.
>
> Det giver mulighed for at sende dine egne "ping" pakker, data-pakker og
> hvad du nu ellers måtte finde på i fremtiden, og det giver et oplagt
> mulighed for at sende information om versionsnumre til hinanden, så du kan
> opgradere server og klienter uafhængig af hinanden (ja, det er
> selvfølgelig
> dig som skal lave alt kodearbejdet for at få det til at virke).
>
> -------
> Tomas



Søg
Reklame
Statistik
Spørgsmål : 177579
Tips : 31968
Nyheder : 719565
Indlæg : 6409075
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste