NetworkServerEvent erkennt Standby nicht

Für allgemeine Fragen zur Programmierung mit PureBasic.
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

NetworkServerEvent erkennt Standby nicht

Beitrag von Moxl »

Halli Hallo, :mrgreen:

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
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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ß.
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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? :D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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. :D
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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! :)
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8837
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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.
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: NetworkServerEvent erkennt Standby nicht

Beitrag von Moxl »

:praise:

jetzt versteh ichs richtig :allright:

jetzt brauch ich nur noch die befehle wenn einer in den sandby geht und wieder aus dem standby kommt :/
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: NetworkServerEvent erkennt Standby nicht

Beitrag von helpy »

Vielleicht hilft Euch das weiter:

==> http://www.codeproject.com/Articles/192 ... vents-stan
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Moxl
Beiträge: 150
Registriert: 26.10.2012 13:19

Re: NetworkServerEvent erkennt Standby nicht

Beitrag von Moxl »

da muss ich mich anmelden um die Datei zu laden.. :freak:

is des auch für PB weil der beispielcode unten ist ja irgendwas anderes :lol:
Benutzeravatar
helpy
Beiträge: 636
Registriert: 29.08.2004 13:29

Re: NetworkServerEvent erkennt Standby nicht

Beitrag 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
Windows 10
PB Last Final / (Sometimes testing Beta versions)
Antworten