Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Сокет-сервер на питоне (http://www.flasher.ru/forum/showthread.php?t=147693)

nucleartux 10.12.2010 23:59

Сокет-сервер на питоне
 
Питон сервер:
Код:

import asyncore
import socket

class EchoHandler(asyncore.dispatcher_with_send):

    def handle_read(self):
                data = self.recv(1024)
                if data:
                        print 'Received',repr(data)
                        if(str(repr(data)).find('<policy-file-request/>')!=-1):
                                print 'received policy'
                                data = "<?xml version=\"1.0\"?>";
                                data += "<!DOCTYPE cross-domain-policy SYSTEM \"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd\">";
                                data += "<cross-domain-policy>";
                                data += "<allow-access-from domain=\"*\" to-ports=\"*\" />";
                                data += "</cross-domain-policy>\u0000";
                                self.send(data)
                        else:
                                self.send(data)

class EchoServer(asyncore.dispatcher):

    def __init__(self, host, port):
        asyncore.dispatcher.__init__(self)
        self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
        self.set_reuse_addr()
        self.bind((host, port))
        self.listen(5)

    def handle_accept(self):
        pair = self.accept()
        if pair is None:
            pass
        else:
            sock, addr = pair
            print 'Incoming connection from %s' % repr(addr)
            handler = EchoHandler(sock)

server = EchoServer('', 843)
asyncore.loop()

Флеш:
Код AS3:

var serverURL = "127.0.0.1";
Security.allowDomain(serverURL);
Security.loadPolicyFile("xmlsocket://"+serverURL+":843");
trace("loaded policy");
var xmlSocket:XMLSocket = new XMLSocket();
xmlSocket.connect(serverURL, 843);
 
xmlSocket.addEventListener(DataEvent.DATA, onIncomingData);
xmlSocket.addEventListener(Event.CONNECT, onConnect);
stage.addEventListener(MouseEvent.CLICK, onConnect);
function onIncomingData(event:DataEvent):void
{
    trace("[" + event.type + "] " + event.data);
}
 
function onConnect(event:Event):void
{
        xmlSocket.send("Hello World\n");
}

Проблема в то, что если запускать флешку из редактора то все работает, а если закинуть на локальный веб-сервер то видим только:
Incoming connection from ('cl.ie.nt.ip', 40567)
Received '<policy-file-request/>\x00'
received policy

taneR 23.12.2010 16:28

crossdomain.xml


Часовой пояс GMT +4, время: 04:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.