鱼C论坛

 找回密码
 立即注册
查看: 108|回复: 0

求大神解决(python [socket] [win Server] )小哥哥小姐姐快来帮忙解决一下 谢谢

[复制链接]
最佳答案
0 
发表于 2018-8-9 18:42:24 | 显示全部楼层 |阅读模式
3鱼币
大神帮忙解决.
问题描述:
        1.编写了一个程序, socketServer 用于接受socket client(客户端发送过来的数据) ===>测试没问题
        2.经查阅荡了一个python编写的Windows Service. (windes 系统服务.)实现的是把服务安装到Windows之后,测试启动,写入日志没问题.

那么问题来了. 这两个程序怎么整合到一起.实现 安装Windows 服务之后, 增加了 socket Server的接收功能(注意这里是socket Server, 可以多个客户端连接的)
两个程序代码如下:
谢谢大神帮忙解决.  我要详细的说明啊, 小白什么也不会.
  1. #encoding=utf-8
  2. import win32serviceutil
  3. import win32service
  4. import win32event
  5. import win32timezone
  6. import os

  7. class PythonServices(win32serviceutil.ServiceFramework):
  8.     _svc_name_ = 'PythonServices'
  9.     _svc_display_name_ = 'python serverice 程序'
  10.     _svc_description_ = '这个是python练习'


  11.     def __init__(self,args):
  12.         win32serviceutil.ServiceFramework.__init__(self,args)
  13.         self.hWaitStop = win32event.CreateEvent(None,0,0,None)
  14.         self.logger = self._getLogger()
  15.         self.run = True

  16.     def _getLogger(self):
  17.         import inspect
  18.         import logging
  19.         import datetime
  20.         logger = logging.getLogger('[PythonService]')
  21.         this_file = inspect.getfile(inspect.currentframe())
  22.         dirpath = os.path.abspath(os.path.dirname(this_file))
  23.         logName= '%s.log'%datetime.datetime.now().strftime('%Y-%m-%d')
  24.         handler = logging.FileHandler(os.path.join(dirpath,logName))
  25.         formatter = logging.Formatter('%(asctime)s  %(name)-12s %(levelname)-8s %(message)s')
  26.         handler.setFormatter(formatter)
  27.         logger.addHandler(handler)
  28.         logger.setLevel(logging.INFO)
  29.         return logger

  30.     def SvcDoRun(self):
  31.         import time

  32.         self.logger.info('service is run...服务启动了')
  33.         while self.run:

  34.             self.logger.info('service is running...')
  35.             time.sleep(5)

  36.     def SvcStop(self):
  37.         self.logger.info('service is stop.停止了')
  38.         self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
  39.         win32event.SetEvent(self.hWaitStop)
  40.         self.run = False

  41. if __name__ == '__main__':
  42.     import sys
  43.     import servicemanager
  44.     if len(sys.argv) == 1:
  45.         try:
  46.             evtsrc_dll = os.path.abspath(servicemanager.__file__)
  47.             servicemanager.PrepareToHostSingle(PythonServices)
  48.             servicemanager.Initialize('PythonServices',evtsrc_dll)
  49.             servicemanager.StartServiceCtrlDispatcher()
  50.         except win32service.error as details:
  51.             import winerror
  52.             if details == winerror.ERROR_FAILED_SERVICE_CONTROLLER_CONNECT:
  53.                 win32serviceutil.usage()
  54.     else:
  55.         win32serviceutil.HandleCommandLine(PythonServices)
复制代码

  1. import socket
  2. import socketserver
  3. import datetime
  4. import inspect
  5. import logging
  6. import os

  7. class MyTCPHandler(socketserver.BaseRequestHandler):

  8.     logger = logging.getLogger("Serveice:")
  9.     logger.setLevel(logging.INFO)
  10.     logName= '%s.log'%datetime.datetime.now().strftime('%Y-%m-%d')
  11.     fh = logging.FileHandler(logName)
  12.     fh.setLevel(logging.DEBUG)
  13.     formatter = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s:%(message)s"+'\n')
  14.     fh.setFormatter(formatter)
  15.     logger.addHandler(fh)

  16.     def handle(self):

  17.         self.logger.info('客户端'+str(self.client_address)+'已经连接.')

  18.         while True:
  19.             try:
  20.                 self.data = self.request.recv(1024).strip()
  21.                 self.logger.info(str(self.data.hex().upper()))
  22.             except ConnectionResetError as e:
  23.                 self.logger.info(':客户端'+str(self.client_address)+'断开连接.'+str(e))
  24.                 break

  25. if __name__ =='__main__':
  26.     HOST = socket.gethostbyname(socket.gethostname())
  27.     PORT = 9999
  28.     server = socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler)
  29.     server.serve_forever()
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

小甲鱼强烈推荐上一条 /1 下一条

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号

GMT+8, 2018-12-15 13:15

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表