从Flash访问Python服务器

我有一个问题已经打破了我的头一个星期!
我有一个在Python下工作的Flash游戏。 游戏在本地主机上正常工作,但如果有人试图从另一台计算机上播放,则不起作用。 你可以访问mysql,login到服务器,但不能播放。

当从本地主机播放时,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> 

那么,看看你的configuration,我会说你不听你的WAN IP,而是在本地主机上。 因此,如果您希望其他人能够从另一台计算机上使用您的应用程序,则需要确保它正在监听WAN IP,并且没有任何防止访问该IP的防火墙。

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

另外,正如Tom O'Connor所build议的,确保您不在家庭DSL线路上进行NAT。 如果你是你将需要使用端口转发。 请记住,有些ISP不允许在1024以下的端口上使用。