У меня проблема, которая уже больше недели ломает голову!
У меня есть флеш-игра, которая работает на Python. Игра отлично работает с localhost, но не работает, если кто-то пытается запустить ее с другого компьютера. Вы можете получить доступ к mysql, войти на сервер, но не можете играть.
При воспроизведении с локального хоста firestarter сначала получает запись с порта 127.0.0.1:80, неизвестная служба.
Затем при запуске игры запись изменится на 127.0.0.1:2001, неизвестная служба.
Когда другой компьютер попытается играть, получите запись в 80-й порт и остановитесь там.
Ниже приведены отрывки из файлов.
config.py
mysql_host = 'localhost'
mysql_user = 'root'
mysql_pass = 'pass'
root_host = 'localhost'
policy_line = '<?xml version="1.0"?><!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd"><cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/><allow-access-from domain="*" to-ports="843,2001,3001,4001,5001,6001,7001,8001,9001,9002,9092" />
</cross-domain-policy>'
init.py
from policy_server import PolicyFactory
from game_server import gameFactory
from twisted.internet import reactor
def main():
print 'Server Started...'
reactor.listenTCP(843, PolicyFactory())
GameServer = GameFactory('localhost', 'pt_br')
reactor.listenTCP(1024, gameServer)
reactor.listenTCP(2001, gameServer)
reactor.listenTCP(3001, gameServer)
reactor.listenTCP(4001, gameServer)
reactor.listenTCP(6001, gameServer)
reactor.listenTCP(7001, gameServer)
reactor.listenTCP(8001, gameServer)
reactor.listenTCP(9001, gameServer)
reactor.listenTCP(9002, gameServer)
reactor.listenTCP(9092, gameServer)
reactor.run()
if (__name__ == '__main__'):
main()
crossdomain.xml
<cross-domain-policy><site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="localhost" to-ports="843,1024,2001,3001,4001,5001,6001,7001,8001,9001,9002,9092"/>
<allow-access-from domain="http://127.0.0.1" to-ports="843,1024,2001,3001,4001,5001,6001,7001,8001,9001,9002,9092"/>
</cross-domain-policy>
Что ж, глядя на вашу конфигурацию, я бы сказал, что вы слушаете не свой WAN IP, а локальный хост. Поэтому, если вы хотите, чтобы другие люди могли использовать ваше приложение с другого компьютера, вам необходимо убедиться, что он прослушивает IP-адрес WAN и что у вас нет брандмауэров, которые могли бы предотвратить доступ к этому IP-адресу.
В Ubuntu вы можете использовать ifconfig
(возможно, потребуется использовать sudo) и посмотрите, какой IP присвоен вашему интерфейсу wlanX / ethX. Этот IP-адрес является вашим IP-адресом в глобальной сети.
Кроме того, как предложил Том О'Коннор, убедитесь, что вы не подключены через NAT к домашней линии DSL. Если да, то вам нужно будет использовать переадресацию портов. Имейте в виду, что некоторые интернет-провайдеры не разрешают это для портов ниже 1024.