Flash客户端XMLsocket无法连接到python服务器

Posted

技术标签:

【中文标题】Flash客户端XMLsocket无法连接到python服务器【英文标题】:Flash client XMLsocket can't connect to python server 【发布时间】:2015-10-27 15:58:39 【问题描述】:

我有一个 Flash 客户端使用 XMLsocket 连接 python 服务器,如下所示:

Security.loadPolicyFile("xmlsocket://*.*.*.*:843");
socket = new XMLSocket();
socket.connect('*.*.*.*', 50000);
socket.send('hello world');

我使用这个 python 脚本来发送安全文件

#security.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 843))

s.listen(5)
print('Start...')

def link(sock, addr):
    print('Accept new connection from %s:%s...' % addr)
    while True:
        data = sock.recv(1024)
        str = data.decode('utf-8')[:22]
        if str=='<policy-file-request/>':
            print('!!!!!!!')
            sock.send(b'<?xml version="1.0"?>')
            sock.send(b'<cross-domain-policy>')
            sock.send(b'<allow-access-from domain="*" to-ports="50000" />')
            sock.send(b'</cross-domain-policy>\0')
            sock.close()
            break
    print('')

while True:
    sock, addr = s.accept()
    t = threading.Thread(target=link, args=(sock, addr))
    t.start()

并使用它来接收来自客户端的消息:

#server.py
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('0.0.0.0', 50000))

s.listen(5)
print('Waiting for connection...')

def tcplink(sock, addr):
    print('Accept new connection from %s:%s...' % addr)
    while True:
        data = sock.recv(1024)
        print(data.decode('utf-8'))

while True:
    sock, addr = s.accept()
    t = threading.Thread(target=tcplink, args=(sock, addr))
    t.start()

当这些脚本运行时,security.py 输出:

Start...
Accept new connection from *.*.*.*....
!!!!!!!

但是 server.py 除了这个之外什么都不输出:

Waiting for connection...

flash的调试也没有输出

好像flash收到安全文件成功了,但是XMLsocket.connect失败了?

【问题讨论】:

【参考方案1】:

很难说这里出了什么问题,但我猜某处仍然存在安全问题。为什么不向套接字连接添加事件侦听器并查看是否会收到任何错误消息?在页面底部查看一些事件侦听器示例:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/XMLSocket.html

我猜你已经仔细阅读了这篇文章,也许它会给你一些提示:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c60.html

【讨论】:

以上是关于Flash客户端XMLsocket无法连接到python服务器的主要内容,如果未能解决你的问题,请参考以下文章

Flash 客户端 XMLSocket 未连接到服务器

XMLSocket 在 Firefox 中工作,但不在 IE 中

XMLSocket 可以接收数据但不能发送

从Http的连接到WebSocket

将 javascript 连接到 php 套接字以与 Flash 通信

Android 中的 ActionScript 套接字