Доступ к серверу Python из Flash
У меня проблема, которая ломала мне голову больше недели!
У меня есть Flash-игра, которая работает под 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>
1 ответ
Что ж, глядя на вашу конфигурацию, я бы сказал, что вы слушаете не ваш WAN IP, а локальный хост. Поэтому, если вы хотите, чтобы другие люди могли использовать ваше приложение с другого компьютера, вам необходимо убедиться, что оно прослушивает IP-адрес глобальной сети и у вас нет установленных межсетевых экранов, которые бы препятствовали доступу к этому IP-адресу.
На Ubuntu вы можете использовать ifconfig
(возможно, потребуется использовать sudo) и посмотреть, какой IP назначен вашему интерфейсу wlanX / ethX. Этот IP - ваш WAN IP.
Кроме того, как предполагает Том О'Коннор, убедитесь, что вы не подключены через NAT на домашней линии DSL. Если вы, вам нужно будет использовать переадресацию портов. Имейте в виду, что некоторые интернет-провайдеры не допускают этого для портов ниже 1024.