2015-05-27 2 views
0

У меня есть python script server-> client, и по некоторым причинам я использовал py2exe для вывода exe из py, поэтому я могу использовать на компьютерах без установленного python.
И у меня есть и обновление система: Я посылаю обновление команды на сервер и сервер запустить файл летучей мыши:python socket не работает после перезапуска приложения

suprocess.Popen("C:/Server/server.bat", shell=False) # 

и server.bat содержат:

@echo off taskkill /f /im "dServer.exe" echo D | xcopy /s /y \\netpath\share\Server\c:\Server start dServer.exe exit
Первый раз, когда я начало DServer. exe работает, я могу отправить команду от клиента на сервер и получить ответ. Но после того, как обновление и dServer.exe снова запустится, сервер не будет работать, я получил ошибку socket.timeout и не могу отправлять команды.
Кто-нибудь знает, почему он не работает второй раз?
p.s У меня есть команда: server.setsockopt (socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
Спасибо!

+1

Это работает, если вы даете ему достаточно времени между убийством и перезагрузкой? (в linux может потребоваться десятки секунд между завершением экземпляра сервера без чистого отключения ядра, пока другой экземпляр сервера не сможет успешно зарегистрироваться для прослушивания по тем же параметрам сокета). –

ответ

1

Проблема заключалась в том, что сервер сокетов не закрывается так быстро, а второй сервер начинает быстро и не может, поскольку порт используется. Я изменил dServer.py и теперь перед тем, как позвонить server.bat i Закройте сокет.

Смежные вопросы