<?xml version="1.0" encoding="ascii"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>VisionEgg.TCPController</title> <link rel="stylesheet" href="epydoc.css" type="text/css" /> <script type="text/javascript" src="epydoc.js"></script> </head> <body bgcolor="white" text="black" link="blue" vlink="#204080" alink="#204080"> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="VisionEgg-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <!-- Project homepage --> <th class="navbar" align="right" width="100%"> <table border="0" cellpadding="0" cellspacing="0"> <tr><th class="navbar" align="center" ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th> </tr></table></th> </tr> </table> <table width="100%" cellpadding="0" cellspacing="0"> <tr valign="top"> <td width="100%"> <span class="breadcrumbs"> <a href="VisionEgg-module.html">Package VisionEgg</a> :: Module TCPController </span> </td> <td> <table cellpadding="0" cellspacing="0"> <!-- hide/show private --> <tr><td align="right"><span class="options" >[<a href="frames.html" target="_top">frames</a >] | <a href="VisionEgg.TCPController-module.html" target="_top">no frames</a>]</span></td></tr> </table> </td> </tr> </table> <!-- ==================== MODULE DESCRIPTION ==================== --> <h1 class="epydoc">Module TCPController</h1><span class="codelink"><a href="VisionEgg.TCPController-pysrc.html">source code</a></span><br /><br /> <pre class="literalblock"> Allows control of parameter values over the network. Don't use for realtime control unless you think your network is that fast and reliable. Also, this code has not been optimized for speed, and I think it is unwise to attempt to change the value of controllers in realtime. In other words, do not design an experiment where, on a remote computer, you have determined that a certain amount of time has passed, and you require a certain new controller value NOW. In this case, it would be better to use parameter=eval_str() with an if statement involving time. To control parameters over a network, start a server with an instance of TCPServer. The server spawns an instance of SocketListenController for each connected socket. (Most commonly you will only want connection over a single socket.) The instance of SocketListenController handles all communication for that connection and serves as a container and (meta) controller for instances of TCPController. This module contains ABSOLUTELY NO SECURITY FEATURES, and could easily allow arbitrary execution of code on your computer. For this reason, if you use this module, I recommend operating behind a firewall. This could be an inexpensive "routing switch" used for cable modems, which would provide the added benefit that your local network would be isolated. This would elimate all traffic not to or from computers on the switch and therefore reduce/eliminate packet collisions, decrease latency, and providing a network performance and reliability. To address security concerns, you could also write code that implements IP address checking or other security features. </pre><br /><br /> <hr /> <div class="fields"> <p><strong>Author:</strong> Andrew Straw <astraw@users.sourceforge.net> </p> </div><!-- ==================== CLASSES ==================== --> <a name="section-Classes"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Classes</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a href="VisionEgg.TCPController.TCPServer-class.html" class="summary-name">TCPServer</a><br /> TCP server creates SocketListenController upon connection. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a href="VisionEgg.TCPController.SocketListenController-class.html" class="summary-name">SocketListenController</a><br /> Handle connection from remote machine, control TCPControllers. </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a href="VisionEgg.TCPController.TCPController-class.html" class="summary-name">TCPController</a><br /> Control a parameter from a network (TCP) connection. </td> </tr> </table> <!-- ==================== VARIABLES ==================== --> <a name="section-Variables"></a> <table class="summary" border="1" cellpadding="3" cellspacing="0" width="100%" bgcolor="white"> <tr bgcolor="#70b0f0" class="table-header"> <td align="left" colspan="2" class="table-header"> <span class="table-header">Variables</span></td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="__version__"></a><span class="summary-name">__version__</span> = <code title="VisionEgg.release_name">VisionEgg.release_name</code> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="__cvs__"></a><span class="summary-name">__cvs__</span> = <code title="'$Revision$'.split() [1]">'$Revision$'.split() [1]</code> </td> </tr> <tr> <td width="15%" align="right" valign="top" class="summary"> <span class="summary-type"> </span> </td><td class="summary"> <a name="__date__"></a><span class="summary-name">__date__</span> = <code title="' '.join('$Date$'.split() [1: 3])">' '.join('$Date$'.split() [1: 3])</code> </td> </tr> </table> <!-- ==================== NAVIGATION BAR ==================== --> <table class="navbar" border="0" width="100%" cellpadding="0" bgcolor="#a0c0ff" cellspacing="0"> <tr valign="middle"> <!-- Home link --> <th> <a href="VisionEgg-module.html">Home</a> </th> <!-- Tree link --> <th> <a href="module-tree.html">Trees</a> </th> <!-- Index link --> <th> <a href="identifier-index.html">Indices</a> </th> <!-- Help link --> <th> <a href="help.html">Help</a> </th> <!-- Project homepage --> <th class="navbar" align="right" width="100%"> <table border="0" cellpadding="0" cellspacing="0"> <tr><th class="navbar" align="center" ><a class="navbar" target="_top" href="http://www.visionegg.org">Vision Egg</a></th> </tr></table></th> </tr> </table> <table border="0" cellpadding="0" cellspacing="0" width="100%%"> <tr> <td align="left" class="footer"> Generated by Epydoc 3.0beta1 on Sat Jun 7 15:40:10 2008 </td> <td align="right" class="footer"> <a href="http://epydoc.sourceforge.net">http://epydoc.sourceforge.net</a> </td> </tr> </table> <script type="text/javascript"> <!-- // Private objects are initially displayed (because if // javascript is turned off then we want them to be // visible); but by default, we want to hide them. So hide // them unless we have a cookie that says to show them. checkCookie() // --> </script> </body> </html>