*******
  UDP
*******

.. topic:: Introduction

   This page describes how to setup the UDP example application
   using `Adobe AIR`_, PyAMF and Twisted_.

   Adobe AIR 2.x supports `UDP sockets`_, allowing you to send
   and receive messages using the Universal Datagram Protocol (UDP).
   
   The example application shows you how to echo a typed object
   every x seconds and display the active hardware and software
   network interfaces that are available on the client computer.

.. contents::

Download
========

#. Download and install the Adobe AIR runtime_. Also download the
   Adobe AIR SDK_ if you want to modify and compile the application.

#. Clone the PyAMF repository with:

.. code-block:: bash

    git clone git://github.com/hydralabs/pyamf.git pyamf
    cd doc/tutorials/examples/actionscript/udp-example

Alternatively, if you just want to have a look, you can browse_ the example online.


Server
======

**Note**: Make sure you have Twisted_ >= 2.5 installed.

The UDP server for the Adobe Flash Player starts on localhost:55555 when you
launch the `development server`_:

.. code-block:: bash

    python server.py

You should see something like::

    Registered alias 'org.pyamf.examples.air.udp.vo.HelloWorld' for class 'HelloWorld'
    Server started listening on port 55555


Client
======

AIR
---

After you started the server you can simply install the `AIR file`_, launch it and
it will show you're connected to localhost:55555, i.e.:

.. image:: images/udp-overview.png

The server terminal window shows it receiving and echoing back the `HelloWorld`
instances::

    Registered alias 'org.pyamf.examples.air.udp.vo.HelloWorld' for class 'HelloWorld'
    Server started listening on port 55555
    received <HelloWorld msg='UDP message' time=2009-12-28 19:36:53.370000 /> from 192.168.0.3:55554
    received <HelloWorld msg='UDP message' time=2009-12-28 19:36:57.418000 /> from 192.168.0.3:55554
    received <HelloWorld msg='UDP message' time=2009-12-28 19:37:01.418000 /> from 192.168.0.3:55554
    received <HelloWorld msg='UDP message' time=2009-12-28 19:37:05.417000 /> from 192.168.0.3:55554
    received <HelloWorld msg='UDP message' time=2009-12-28 19:37:09.417000 /> from 192.168.0.3:55554

Drag the window or resize it by dragging any of the sides or corners:

.. image:: images/udp-resize.png

Right-click for the fullscreen and always on top options:

.. image:: images/udp-options.png


.. _Adobe AIR: http://www.adobe.com/products/air
.. _runtime: http://get.adobe.com/air
.. _SDK: http://www.adobe.com/go/air_sdk
.. _Twisted: http://twistedmatrix.com
.. _UDP sockets: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/DatagramSocket.html
.. _browse: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/udp
.. _development server: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/udp/python/server.py
.. _AIR file: http://github.com/hydralabs/pyamf/tree/master/doc/tutorials/examples/actionscript/udp/air/deploy/udp.air
