[Python-de] nt-dienst

Frank Immich frankimmich at gmx.de
Wed Jun 6 17:22:07 EDT 2001


Hallo zusammen, 
kann mir vielleicht jemand noch einmal weiterhelfen ? Ich versuche gerade
eine Socket-Verbindung   als Dienst unter NT laufen zu lassen. Ich habe auch
die Bsp. unter win32/demos/service... gefunden nur komme ich hier mit meinem
"try and error" Prinzip  nicht weiter. Vielleicht hat jemand Zeit mir
weiterzuhelfen. Es folgt mein Versuch, einen absolut simplen socket server als
NT-Dienst zu realisieren. Für eventuellen grenzenlosen Dilettantismus entschuldige
ich mich im voraus ;-)  Ich wäre allerdings dankbar für jedes (nette)
Kommentar. 

import sys, os, string
from socket import *
import win32serviceutil
import win32service
import win32event
import pywintypes

port = 4127
BUFSIZE = 1024

class TestPipeService(win32serviceutil.ServiceFramework):
        _svc_name_ = "test"
        _svc_display_name_ = "test"
        def __init__(self, args):
                win32serviceutil.ServiceFramework.__init__(self, args)
                self.hWaitStop = CreateEvent(None, 0, 0, None)
                self.overlapped = pywintypes.OVERLAPPED()
                self.overlapped.hEvent = CreateEvent(None,0,0,None)

def SvcStop(self):
                self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
                SetEvent(self.hWaitStop)

def SvcDoRun(self):
    
        s = socket(AF_INET, SOCK_STREAM)
        s.bind(('', port))
        s.listen(1)
        while 1:

        # hier klemmt es... wie vernüpfe ich  overlapped.hEvent mit dem
socket ???
        
                myHandels = self.hWaitStop, self.overlapped.hEvent
                stp =
win32event.WaitForMultipleObjects(myHandels,0,win32event.INFINITE)  
                if stp==win32event.WAIT_OBJECT_0:
                    break
        # kann man das im folgenden so einfach machen ? 
                else:
                    conn, (remotehost_ip, remoteport) = s.accept()
                    hostname, aliaslist, ipaddr = gethostbyaddr
(remotehost_ip)
                    data = conn.recv(BUFSIZE)
                    if not data:
                           break
                    data = data + " host:" + hostname
                    conn.send(data)
                    conn.close()


if __name__=='__main__':
    win32serviceutil.HandleCommandLine(test)

-- 
Machen Sie Ihr Hobby zu Geld bei unserem Partner 1&1!
http://profiseller.de/info/index.php3?ac=OM.PS.PS003K00596T0409a

--
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net




More information about the Python-de mailing list