Namespaces
Variants
Actions

How to create a socket server in Python

Jump to: navigation, search
Archived.png
Archived: This article is archived because it is not considered relevant for third-party developers creating commercial solutions today. If you think this article is still relevant, let us know by adding the template {{ReviewForRemovalFromArchive|user=~~~~|write your reason here}}.

The article is believed to be still valid for the original topic scope.


Article Metadata

Article
Created: felipebzr (02 May 2008)
Last edited: lpvalente (29 Mar 2013)

Like Flash Lite 3, the Flash Player plug-in embedded on Maemo has built-in security restrictions that prevents cross-domain access. If you are planning to implement and use your own socket server or if you are accessing anything remote from a local file, for security, by default Flash Player does not allow an application to access a remote data source from a domain other than the domain from which the application was served. So you have to put a crossdomain.xml file on the server you are accessing.

A crossdomain.xml file is an XML file that provides a way for a server to indicate that its data and documents are available to SWF files served from certain domains, or from all domains. The crossdomain.xml file must be in the web root of the server that the Flex application is contacting.

The following code can be used to overcome the flash player security allowing calls between a local python server (socket engine) and the flash player (web content).

import socket
 
_connector = None
_running = True
 
_host = '127.0.0.1'
_port = '843'
_maxClient = 999
 
debug = True
_policyFile = '<?xml version="1.0" encoding="UTF-8"?><cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFileSocket.xsd"><allow-access-from domain="*" to-ports="*" secure="false" /><site-control permitted-cross-domain-policies="master-only" /></cross-domain-policy>'
 
## Trace debugging messages.
# @param aString String to be printed.
def printd( aString ):
if debug:
print aString
 
_connector = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
_connector.bind ( ( str(_host), int(_port) ) )
_connector.listen ( int(_maxClient) )
_running = True
 
while _running:
printd('Running on port ' + _port + ' ... ')
channel, details = _connector.accept()
 
if _running:
printd( 'New connection with: ' + str(details) )
channel.setblocking( 1 )
recvData = channel.recv(2000)
 
if("policy-file-request" in recvData):
channel.send(_policyFile)
 
printd( 'host: ' + str(details[0]) )
printd( 'port: ' + str(details[1]) )
printd( 'port: ' + str(int(details[1])) )
 
channel.close()

Download

You can download the Flex MXML sample and the Python code at code.google.com

Autor

FelipeAndrade 13:41, 02 May 2008

This page was last modified on 29 March 2013, at 21:21.
242 page views in the last 30 days.
Nokia Developer aims to help you create apps and publish them so you can connect with users around the world.

京ICP备05048969号  © Copyright Nokia 2013 All rights reserved