从 Flash 访问 Python 服务器

从 Flash 访问 Python 服务器

我有一个问题困扰了我一个多星期!
我有一个在 Python 下运行的 Flash 游戏。该游戏在本地主机上运行良好,但如果有人试图从另一台计算机玩它,它就无法运行。您可以访问 mysql,登录服务器,但无法玩。

当从本地主机播放时,firestarter 首先从 127.0.0.1:80 端口、未知服务获取一个条目。

然后当游戏开始时,条目变为 127.0.0.1:2001,未知服务。

当其他计算机尝试播放时,在 80 端口获取一个条目,并在那里停止。

以下是一些文件摘录。

配置.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>'

初始化文件

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()

跨域配置文件

<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,而是在监听本地主机。因此,如果你希望其他人能够从另一台计算机使用你的应用程序,你需要确保它在监听 WAN IP,并且你没有设置任何会阻止访问该 IP 的防火墙。

在 Ubuntu 上,您可以使用ifconfig(可能需要使用 sudo)并查看分配给 wlanX/ethX 接口的 IP。该 IP 是您的 WAN IP。

此外,正如 Tom O'Connor 所建议的,请确保您没有在家庭 DSL 线路上进行 NAT。如果进行了 NAT,则需要使用端口转发。请记住,某些 ISP 不允许对 1024 以下的端口进行此操作。

相关内容