Доступ к серверу 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.

Другие вопросы по тегам