无法访问作为Windows服务运行的Python服务器
我写了一个Python的TCP/IP服务器,主要是为了内部使用,使用win32serviceutil和py2exe把它做成了一个Windows服务。
我把它安装在一台运行Windows XP Pro SP3的电脑上。但是,当它作为服务运行时,我无法连接到它。我可以确认它已经绑定到了指定的地址和端口,因为当我尝试用另一个应用程序去绑定同样的地址和端口时,会出现冲突。此外,我检查了Windows防火墙的设置,并添加了相应的例外。如果我把服务器作为一个简单的控制台应用程序运行,一切都能正常工作。但是,当我把它作为服务运行时,就不行了。
我隐约记得之前遇到过这个问题,但就是想不起来具体的细节了。
有没有人有建议?
3 个回答
0
检查一下这个服务是否是以网络服务账户在运行,而不是以本地系统账户在运行。后者是没有网络访问权限的,而且通常是服务默认使用的账户。你可以通过在开始菜单的管理工具中找到服务应用程序来查看这个服务。右键点击这个服务,你可以进入属性设置,修改它运行的账户。
1
1
首先,当你在做一个Windows服务的时候,一定要记得加上合适的日志记录。
我的工作线程因为出现了一个错误而停止了,错误信息是“套接字操作无法在不阻塞的情况下完成”。
解决这个问题的方法很简单,就是在接受连接之后,调用一下 sock.setblocking(1)
。