无法访问作为Windows服务运行的Python服务器

时间:2009-05-07 05:52:05

标签: python windows-services tcp

我编写了一个供内部使用的Python TCP / IP服务器,使用win32serviceutil / py2exe创建Windows服务。

我将它安装在运行Windows XP Pro SP3的计算机上。但是,当它作为服务运行时,我无法连接到它。我可以确认它绑定到地址/端口,因为当我尝试用另一个应用程序绑定到该地址/端口时,我遇到了冲突。此外,我已检查Windows防火墙设置并添加了适当的例外。如果我将服务器作为简单的控制台应用程序运行,一切都按预期工作。但是,当我将其作为服务运行时,它不起作用。

我依旧记得以前遇到过这个问题,但是对于我的生活记不起任何细节。

建议,有人吗?

3 个答案:

答案 0 :(得分:1)

程序可能会在初始化后立即终止。请检查是否一直在听取请求。

netstat -an |find /i "listening"

分析解析给程序的命令行。您可以使用procexp来执行此操作。

答案 1 :(得分:1)

首先,无论何时实施Windows服务,请务必添加正确的日志记录。

我的工作线程因为异常而终止,“套接字操作无法在没有阻塞的情况下完成。”

解决方案是在接受连接后简单地调用sock.setblocking(1)

答案 2 :(得分:0)

检查该服务是否在Nertwork服务帐户下运行,而不是本地系统帐户。后者没有网络访问权限,是下运行服务的默认用户。您可以通过转到开始菜单中管理工具下的服务应用程序并查找您的服务来查看此信息。如果右键单击该服务,则可以转到属性并更改在其下运行的用户。