从服务器单元拒绝连接我重置客户端机器

时间:2011-10-31 12:57:35

标签: python tcp client

以下是我在服务中运行的代码。在大多数情况下,脚本运行好几天/几周,直到脚本打嗝并崩溃。我不是很担心崩溃的部分,因为我可以从错误日志中解决原因适当的补丁。我面临的问题是,有时当服务重新启动并尝试再次连接到服务器时,会出现(10061, 'Connection refused')错误,因此服务无法再次启动。奇怪的是,当连接被拒绝时,没有运行python进程。 IE没有图像名称为“pythonw.exe”或“pythonservice.exe”的进程。应该注意的是,在重置运行客户端脚本的计算机之前,我无法使用任何其他计算机连接到服务器。客户端计算机在Windows Server 2003操作系统上运行python 2.7。还应注意,服务器是在一块我无法访问代码的硬件上编码的。

try:            
        EthernetConfig = ConfigParser()
        EthernetConfig.read('Ethernet.conf')

        HOST = EthernetConfig.get("TCP_SERVER", "HOST").strip()
        PORT = EthernetConfig.getint("TCP_SERVER", "PORT")

        lp = LineParser()
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

        s.connect((HOST, PORT))
        reader = s.makefile("rb")

        while(self.run == True):

            line = reader.readline()
            if line:
                line = line.strip()
                lp.parse(line)
except:

        servicemanager.LogErrorMsg(traceback.format_exc()) # if error print it to event log
        s.shutdown(2)
        s.close()
        os._exit(-1)

2 个答案:

答案 0 :(得分:1)

拒绝连接是一个错误,意味着连接另一端的程序不接受您的连接尝试。很可能它没有注意到你崩溃,并且没有关闭它的连接。

你可以做的只是睡一会儿(30-60秒)并再试一次,并在循环中执行此操作并希望另一端注意到连接已断开,以便它可以再次接受新连接。

答案 1 :(得分:0)

原来,网络管理员关闭了我尝试连接的端口。它对于属于服务器的一个IP是开放的。问题是服务器有两个带有两个独立IP的网卡。问题现已解决。