Seite 1 von 3
NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 21:20
von Moxl
Halli Hallo,
ich habe ein Server - Client Programm geschrieben aber wenn ein Client verbunden ist und in den Standby Modus geht,
dann erkennt der Server das mittels NetworkServerEvent() nicht :/
Erst wenn ich dem Client ein String oder Rohdaten schicke, dauerts so ca. ne minute bis der Client dann auf einmal "offline" geht.
Woran liegt das? und wie kann ich das beheben?
LG Moxl
Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 21:26
von NicTheQuick
Du musst dann in deinem Client eine Erkennung für den Standby-Modus einbauen und den Server direkt benachrichtigen, dass sich der Client ohne weitere Interaktion nun verabschieden wird.
Codes, die erkennen, ob das System in Standby oder in den Ruhezustand geht oder komplett herunter fährt, müsste man hier im Forum finden, soweit ich weiß.
Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 21:35
von Moxl
Ah das wäre ne gute Idee.
Also könnte der Client auch einfach selber CloseNetworkConnection(Verbindung) einsetzten sobald der Standby Modus einsetzt. Der Server müsste das ja eigentlich erkennen.
Nur wie startet der Client dann wieder sobald er aus dem Standby aufwacht?

Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 21:38
von NicTheQuick
Sicher bin ich mir nicht, aber wenn man erkennen kann, dass gleich ein Standby kommt, dann sollte man auch erkennen können, dass man wieder aufwacht. Und du musst ja nicht den kompletten Clienten beenden, sondern nur die Verbindung schließen bzw. dem Server sagen, dass er sie schließen soll. Das Clientprogramm kann ja weiter laufen und sich dann wieder mit dem Server verbinden, sobald das Standby vorüber ist.
Aber bezüglich dem Feststellen, wann Standby passiert, musst du auf anderen Antworten warten. Für Windows bin ich nicht zuständig.

Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 21:45
von Moxl
okay verstehe was du meinst... aber hält windows nicht mein programm komplett an wenn es in den Standby modus geht? :/
naja ich warte nochmal auf weitere antworten

trotzdem danke!

Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 22.04.2013 23:34
von NicTheQuick
Moxl hat geschrieben:okay verstehe was du meinst... aber hält windows nicht mein programm komplett an wenn es in den Standby modus geht? :/
Klar macht es das. Aber nach dem Standby läuft es doch wieder.
Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 23.04.2013 17:33
von Moxl
jetzt versteh ichs richtig
jetzt brauch ich nur noch die befehle wenn einer in den sandby geht und wieder aus dem standby kommt :/
Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 23.04.2013 18:07
von helpy
Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 23.04.2013 22:33
von Moxl
da muss ich mich anmelden um die Datei zu laden..
is des auch für PB weil der beispielcode unten ist ja irgendwas anderes

Re: NetworkServerEvent erkennt Standby nicht
Verfasst: 24.04.2013 09:46
von helpy
Hier ein Beispiel in PureBasic:
Code: Alles auswählen
EnableExplicit
Declare WindowCallback( hWnd, uMsg, wParam, lParam )
Declare AppendLog( msg.s )
Global winMain, edLog
Define wEvent
winMain = OpenWindow( #PB_Any, #PB_Ignore, #PB_Ignore, 400,200, "Test some events!", #PB_Window_SystemMenu | #PB_Window_TitleBar )
edLog = EditorGadget( #PB_Any, 8, 8, 400-16, 200-16, #PB_Editor_ReadOnly )
AddKeyboardShortcut( winMain, #PB_Shortcut_Insert | #PB_Shortcut_Control, 1 )
SetWindowCallback( @WindowCallback() )
AppendLog( "Program started" )
Repeat
wEvent = WaitWindowEvent(100)
Select wEvent
Case #PB_Event_CloseWindow
CloseWindow(winMain)
Break
Case #PB_Event_Menu
If EventMenu() = 1
AppendLog( InputRequester( "Log message", "Your log message:", "") )
EndIf
EndSelect
ForEver
End
#PBT_APMPOWERSTATUSCHANGE = $000A
#PBT_APMRESUMEAUTOMATIC = $0012
#PBT_APMRESUMESUSPEND = $0007
#PBT_APMSUSPEND = $0004
#PBT_POWERSETTINGCHANGE = $8013
;Windows Server 2003 And Windows XP: The following events are also supported:
#PBT_APMBATTERYLOW = $0009
#PBT_APMOEMEVENT = $000B
#PBT_APMQUERYSUSPEND = $0000
#PBT_APMQUERYSUSPENDFAILED = $0002
#PBT_APMRESUMECRITICAL = $0006
Procedure WindowCallback( hWnd, uMsg, wParam, lParam )
Select uMsg
Case #WM_POWERBROADCAST
Select wParam
Case #PBT_APMPOWERSTATUSCHANGE
AppendLog( "PBT_APMPOWERSTATUSCHANGE" )
Case #PBT_APMRESUMEAUTOMATIC
AppendLog( "PBT_APMRESUMEAUTOMATIC" )
Case #PBT_APMRESUMESUSPEND
AppendLog( "PBT_APMRESUMESUSPEND" )
Case #PBT_APMSUSPEND
AppendLog( "PBT_APMSUSPEND" )
Case #PBT_POWERSETTINGCHANGE
AppendLog( "PBT_POWERSETTINGCHANGE" )
;Windows Server 2003 And Windows XP: The following events are also supported:
Case #PBT_APMBATTERYLOW
AppendLog( "PBT_APMBATTERYLOW" )
Case #PBT_APMOEMEVENT
AppendLog( "PBT_APMOEMEVENT" )
Case #PBT_APMQUERYSUSPEND
AppendLog( "PBT_APMQUERYSUSPEND" )
Case #PBT_APMQUERYSUSPENDFAILED
AppendLog( "PBT_APMQUERYSUSPENDFAILED" )
Case #PBT_APMRESUMECRITICAL
AppendLog( "PBT_APMRESUMECRITICAL" )
EndSelect
Default
EndSelect
ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure
Procedure AppendLog( msg.s )
AddGadgetItem( edLog, -1, FormatDate( "%yyyy.%mm.%dd @ %hh:%ii:%ss: ", Date() ) + msg )
EndProcedure
Ergebnis bei mir unter Windows 7:
Code: Alles auswählen
2013.04.24 @ 09:35:45: Program started
2013.04.24 @ 09:36:02: Standby Windows 7
2013.04.24 @ 09:36:14: PBT_APMSUSPEND
2013.04.24 @ 09:36:40: PBT_APMRESUMEAUTOMATIC
2013.04.24 @ 09:36:40: PBT_APMRESUMESUSPEND
2013.04.24 @ 09:38:40: Hibernate Windows 7
2013.04.24 @ 09:38:44: PBT_APMSUSPEND
2013.04.24 @ 09:39:40: PBT_APMRESUMESUSPEND
2013.04.24 @ 09:39:43: PBT_APMRESUMEAUTOMATIC