2010-12-10 13 views
0

Ich versuche, Daten zu senden und Daten mit Sockets zwischen Adobe Flash-Client und Python-Server zu erhalten. Flash-Client:Flash-Sockets mit Python-Server

var serverURL = "se.rv.er.ip"; 
var xmlSocket:XMLSocket = new XMLSocket(); 
xmlSocket.connect(serverURL, 50007); 

xmlSocket.addEventListener(DataEvent.DATA, onIncomingData); 

function onIncomingData(event:DataEvent):void 
{ 
    trace("[" + event.type + "] " + event.data); 
} 

xmlSocket.send("Hello World"); 

und Python-Server:

import socket 

HOST = ''     # Symbolic name meaning all available interfaces 
PORT = 50007    # Arbitrary non-privileged port 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((HOST, PORT)) 
s.listen(1) 
conn, addr = s.accept() 
print 'Connected by', addr 
while 1: 
    data = conn.recv(1024) 
    if (data): 
     print 'Received', repr(data) 
     # data 
     if(str(repr(data)).find('<policy-file-request/>')!=-1): 
      print 'received policy' 
      conn.send('<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="50007" /></cross-domain-policy>') 
      conn.send('hellow wolrd') 
conn.close() 

Aber dieser Code funktioniert nicht. Python-Server Ausgabe:

Connected by ('cl.ie.nt.ip', 3854) 
Received '<policy-file-request/>\x00' 
received policy 

Antwort

1

Sie sollten nicht die Buchsenmodul verwenden, wenn Sie nicht haben. Verwenden Sie SocketServer, wenn Sie möchten, nun, ein Socket-Server.

import SocketServer 

class MyTCPHandler(SocketServer.BaseRequestHandler): 
    def handle(self): 
      # self.request is the TCP socket connected to the client 
      self.data = self.request.recv(1024).strip() 
      print "%s wrote:" % self.client_address[0] 
      print self.data 
      if '<policy-file-request/>' in self.data: 
       print 'received policy' 
       conn.send('<?xml version="1.0"?><cross-domain-policy><allow-access-from domain="*" to-ports="50007" /></cross-domain-policy>') 
       conn.send('hellow wolrd') 

def main(): 
    # Create the server, binding to localhost on port 9999 
    server = SocketServer.TCPServer((HOST, PORT), MyTCPHandler) 

    # Activate the server; this will keep running until you 
    # interrupt the program with Ctrl-C 
    server.serve_forever() 

Es sollte auf diese Weise arbeiten ..

+0

ich denke Problem nicht in Python-Skript, mit Ihnen Skript i auch 127.0.0.1 bekommen schrieb: erhielt Politik und keine Mehr – nucleartux