我有一个问题困扰了我一个多星期!
我有一个在 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 以下的端口进行此操作。