Windows service using the socket module
jdferrell3 at gmail.com
Sun Nov 6 21:26:07 CET 2005
I am fairly new to python and seem to have gotten ahead of myself. I
am trying to write a Windows service that will return the current
number of Citrix sessions to a client. This service will run on my
Citrix servers for usage tracking purposes.
The service itself seems to function properly, it starts, stops, logs
to the event viewer, etc. The problem seems to be with the portion
where it either waits to be stopped or waits for remote connection - it
does not get to the 'wait for remote connection' part.
If I remove the 'wait for stop request' portion the service will return
the session count but of course I can't stop the service nicely.
Does anyone have some example code I could take a look at or some
advice to get me back on track?
thanks in advance,
s = socket.socket()
hostIP = socket.gethostbyaddr(socket.gethostname())
if debug == 'true': servicemanager.LogInfoMsg('Host IP: ' +
# Wait for either a connection, or a service stop request.
timeout = win32event.INFINITE
waitHandles = self.hWaitStop, self.overlapped.hEvent
rc = win32event.WaitForMultipleObjects(waitHandles, 0, timeout)
if rc == win32event.WAIT_OBJECT_0:
# Stop event
sessions = 0
qwinstaOut = os.popen(qwinstaCmd).readlines()
for line in qwinstaOut:
## Look for active ICA sessions
if (((re.search("ICA", line, re.IGNORECASE)):
sessions = sessions + 1
c, addr = s.accept()
## Send session count
More information about the Python-list