#python #networking #timeout #twisted #ogre
#python #сеть #тайм-аут #twisted #ogre
Вопрос:
Мой первый вопрос здесь, так что полегче со мной.
Это моя ситуация:
Я создаю сетевую игру на Python, используя Twisted framework. Игра подключается к главному серверу через TCP на одном порту (соединение поддерживается для аутентификации), а затем вы можете подключиться к сетевому серверу на другом порту. В настоящее время как сетевые, так и программы главного сервера запущены на одном удаленном компьютере.
Пока почти все работает отлично, по крайней мере, при запуске игры через интерпретатор Python. В этом случае подключение к обоим серверам всегда работает нормально. Проблема начинается только после создания автономного исполняемого файла для клиента с помощью py2exe.
На моей машине разработки запуск исполняемого файла позволит мне запустить игру, подключиться к главному серверу и пройти аутентификацию с его помощью. Wireshark сообщает мне, что соединение поддерживается активным и проводятся регулярные опросы. Пока все хорошо. Но когда я пытаюсь подключиться к сетевому игровому серверу (второе TCP-соединение на соседнем порту), результат оказывается несогласованным. Примерно в одном случае из ста это сработает. В остальное время примерно 50/50 между тем, чтобы вообще ничего не делать (Twisted не запускает никаких обратных вызовов), или возвращением сообщения «Сбой соединения вызван таймаутом пользователя». ошибка в течение половины секунды.
Забавно, что Wireshark даже не показывает никаких исходящих TCP-пакетов для этих неудачных «попыток» подключения, независимо от того, возвращают ли они ошибку или вообще ничего не делают.
Затем это становится еще более странным, потому что, когда я запускаю точно такой же исполняемый файл игрового клиента на другой моей тестовой машине, все работает нормально. Никаких проблем с подключением вообще нет, он просто работает каждый раз. На обеих машинах установлена оригинальная Windows 7, на машине разработчика установлена Professional, другая домашняя версия.
Я должен также указать, что запуск игрового сервера локально, даже на том же компьютере, что и клиент (подключение к «localhost»), никак не влияет на эту проблему — симптомы остаются теми же.
Так что же здесь может происходить?
Комментарии:
1. попробуйте сравнить среды Python на обеих машинах и убедитесь, что ваш исполняемый файл py2exe использует абсолютно все, что ему нужно
2. Спасибо за комментарий. На втором компьютере фактически даже нет среды Python, поскольку я использую ее для обеспечения того, чтобы exe-файл был действительно автономным. Однако наличие Python, похоже, не является основной причиной, поскольку вчера мой друг протестировал исполняемый файл на своем компьютере. Там нет среды Python, но у него та же проблема, что и у меня на моем компьютере разработчика. Тем не менее, наличие или отсутствие определенных компонентов может быть хорошей зацепкой.
Ответ №1:
Это звучит как проблема с вашим сетевым стеком Windows. Вы установили что-нибудь, что намеренно нарушает работу сети, например, AVG antivirus? Если у вас есть, ваша сеть может быть нарушена :).
Комментарии:
1. Антивирусное решение, присутствующее в системе, похоже, частично ответственно за эту проблему. Я еще не совсем разобрался в этом, но, кажется, вы наставили меня на правильный путь.