[VB-WS] net voor shutdown nog senddata doen

Pagina: 1
Acties:

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 30-08 23:59
code:
1
2
3
4
5
6
7
8
Private Sub shutdown_Click()
    ws(0).Close 'close listening socket
    For i = 1 To ws.Count - 1
      ws(i).SendData "Server shutting down..."
      ws(i).Close
    Next i
    Unload Me
End Sub

Ik wil dus, net voor de server stopt met draaien nog een boodschap sturen naar alle geconnecteerde clients.
Nu, deze boodschap komt nooit toe als ik direct daarna close en/of unload doe.

Heeft iemand een oplossing voor dit probleempje ?
Voor de rest werkt m'n dingetje al redelijk goed, maar het is zo slordig om zomaar de server stil te leggen zonder eerst een afscheidsboodschapje te sturen ;)

Alvast bedankt !

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

In VB gaat dat via Form_Query_Unload

Kijk eens of dat ook werkt met WS.

Zie hier een voorbeeldje, maar Google kan je meer vertellen.

http://virtual.parkland.cc.il.us/kcouch/cis211/Queryunload.htm

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 30-08 23:59
Op maandag 29 april 2002 23:21 schreef Remark het volgende:
In VB gaat dat via Form_Query_Unload
Kijk eens of dat ook werkt met WS.
Zie hier een voorbeeldje, maar Google kan je meer vertellen.
WinSock heeft die methode niet :(
Maar toch bedankt hoor.
Volgens mij is het iets met een tcp-buffer die niet geledigd wordt voor de socket gesloten wordt.

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

Ik dacht dat je met WS (Windows Scripting) bedoelde.

Wat gebeurt er als je voor Unload Me DoEvents en evt. een Sleep(1000) toevoegt ?

Kan je die WS(0).close ook als laatste opdracht doen ?

Verwijderd

Op dinsdag 30 april 2002 00:45 schreef G8KeePeR het volgende:
WinSock heeft die methode niet :(
Maar toch bedankt hoor.
Volgens mij is het iets met een tcp-buffer die niet geledigd wordt voor de socket gesloten wordt.
WinSock heeft inderdaad geen QueryUnload, maar je Form wel! (Zit ie in een Class, dan moet je Class_Terminate gebruiken...)

Eventueel kan je nog een DoEvents er tussen zetten.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 02-09 19:44

Gerco

Professional Newbie

Je moet eventjes wachten na je senddata, anders kill je 'em terwijl hij bezig is en dan gebeurt er niet veel.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 30-08 23:59
Op dinsdag 30 april 2002 12:02 schreef Gerco het volgende:
Je moet eventjes wachten na je senddata, anders kill je 'em terwijl hij bezig is en dan gebeurt er niet veel.
Dacht ik al, morgen eens proberen met een sleep zoals hierboven werd voorgesteld.
'k Vind het nog altijd een 'vuile' oplossing, maargoed...

[edit]
Het werkt ook niet met die sleep :(
Het wachten doet hij wel, maar de string wordt nog altijd niet gezonden
code:
1
2
3
4
5
6
7
8
9
10
11
12
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub shutdown_Click()
    ws(0).Close 'close listening socket
    
    For i = 1 To ws.Count - 1
      ws(i).SendData "bla"
      Sleep 10000
      ws(i).Close
    Next i
    Unload Me
End Sub

(Hier staat hij dus op 10sec)
sorry voor de verwarring met WS, had inderdaad voor windows script kunnen staan

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

De Sleep lijkt me alleen nodig als DoEvents niet werkt (en die zie ik nog niet staan).
Alles kan imo buiten de loop en direct voor de regel met Unload Me.

Dus:
code:
1
2
3
4
5
6
7
8
9
10
11
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub shutdown_Click()
    ws(0).Close 'close listening socket
    For i = 1 To ws.Count - 1
      ws(i).SendData "bla"
      ws(i).Close
    Next i
    DoEvents
    Sleep (1000)
    Unload Me
End Sub

Als het niet helpt probeer dan ook ws(0).Close na de For ... Next loop te zetten.

Verwijderd

probeer dit eens !

Private Sub shutdown_Click()
ws(0).Close 'close listening socket
For i = 1 To ws.Count - 1
ws(i).SendData "bla"
Next i
DoEvents
Sleep (1000)
For i = 1 To ws.Count - 1
ws(i).Close
Next i
Unload Me
End Sub

hee .. waar gaat mijn inspring heen ??? |:(

  • BitProcessor
  • Registratie: Februari 2001
  • Laatst online: 30-08 23:59
Op donderdag 02 mei 2002 10:26 schreef Skizmo het volgende:
probeer dit eens !

Private Sub shutdown_Click()
ws(0).Close 'close listening socket
For i = 1 To ws.Count - 1
ws(i).SendData "bla"
Next i
DoEvents
Sleep (1000)
For i = 1 To ws.Count - 1
ws(i).Close
Next i
Unload Me
End Sub

hee .. waar gaat mijn inspring heen ??? |:(
Je inspringen gaat weg omdat je de [ code ] tag niet gebruikt, maargoed, bedankt voor je oplossing, want deze werkt perfect !

De vorige (van Remark) niet, omdat daar ook de socket direct wordt gesloten en de DoEvents daar eigenlijk niets meer doet...

Bedankt allemaal :) :) :)

"I think there is a world market for maybe five computers" - Thomas Watson, chairman of IBM, 1943


Verwijderd

code:
1
     hee. . .die inspring werkt ! thanx
Pagina: 1