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

问题描述:

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

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) 

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

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

你可以做的仅仅是睡了一小会儿(30-60秒),然后再试一次,并在一个循环做到这一点,并希望另一端的通知,在断开的连接,因此它可以再次接受新的连接。

+0

+1延迟是一个好主意,我会试试看。但是它仍然不能解释为什么即使没有python进程打开,我仍然无法连接到服务器。即使过了一段时间。 – Richard

+0

@Richard:不,这是拒绝连接的服务器,你的结局没有任何错误。 –

+0

感谢您的帮助。我意识到服务器拒绝连接。阅读文档它一次只允许2个连接。我不明白的是,当我重置客户端机器时,我能够再次连接到服务器,这使我相信有一些东西在客户端机器上使用连接,虽然我没有证据证明它确实如此。 – Richard