tcp_socket/_docs_/index.html
2025-08-14 14:29:53 +02:00

741 lines
71 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Welcome to cachingss documentation! &#8212; tcp_socket documentation</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="_static/classic.css?v=67a6116b" />
<link rel="stylesheet" type="text/css" href="_static/pydoctheme.css?v=5ff89526" />
<link id="pygments_dark_css" media="(prefers-color-scheme: dark)" rel="stylesheet" type="text/css" href="_static/pygments_dark.css?v=5349f25f" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" /><link rel="stylesheet" href="_static/pydoctheme_dark.css" media="(prefers-color-scheme: dark)" id="pydoctheme_dark_css">
<link rel="shortcut icon" type="image/png" href="_static/py.svg">
<script type="text/javascript" src="_static/copybutton.js"></script>
<script type="text/javascript" src="_static/menu.js"></script>
<script type="text/javascript" src="_static/search-focus.js"></script>
<script type="text/javascript" src="_static/themetoggle.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu">
<nav class="nav-content" role="navigation">
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<span class="nav-items-wrapper">
<a href="https://www.python.org/" class="nav-logo">
<img src="_static/py.svg" alt="Python logo">
</a>
<span class="version_switcher_placeholder"></span>
<form role="search" class="search" action="search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero" fill="currentColor" d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path>
</svg>
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q">
<input type="submit" value="Go">
</form>
</span>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label>
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Welcome to cachingss documentation!</a><ul>
<li><a class="reference internal" href="#tcp-socket-tcp-socket">tcp_socket (TCP Socket)</a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base"><code class="docutils literal notranslate"><span class="pre">tcp_base</span></code></a><ul>
<li><a class="reference internal" href="#tcp_socket.tcp_base.client_address"><code class="docutils literal notranslate"><span class="pre">tcp_base.client_address()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.close"><code class="docutils literal notranslate"><span class="pre">tcp_base.close()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.init_channel_name"><code class="docutils literal notranslate"><span class="pre">tcp_base.init_channel_name()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.is_connected"><code class="docutils literal notranslate"><span class="pre">tcp_base.is_connected()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.receive"><code class="docutils literal notranslate"><span class="pre">tcp_base.receive()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_connect_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_connect_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_disconnect_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_disconnect_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.send"><code class="docutils literal notranslate"><span class="pre">tcp_base.send()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp</span></code></a><ul>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp.receive"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp.receive()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp.send"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp.send()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#tcp_socket.tcp_client"><code class="docutils literal notranslate"><span class="pre">tcp_client</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_client_stp"><code class="docutils literal notranslate"><span class="pre">tcp_client_stp</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_server"><code class="docutils literal notranslate"><span class="pre">tcp_server</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_server_stp"><code class="docutils literal notranslate"><span class="pre">tcp_server_stp</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/index.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</nav>
</div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="#">tcp_socket documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">Welcome to cachingss documentation!</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-tcp_socket">
<span id="welcome-to-cachings-s-documentation"></span><h1>Welcome to cachingss documentation!<a class="headerlink" href="#module-tcp_socket" title="Link to this heading"></a></h1>
<section id="tcp-socket-tcp-socket">
<h2>tcp_socket (TCP Socket)<a class="headerlink" href="#tcp-socket-tcp-socket" title="Link to this heading"></a></h2>
<p><strong>Author:</strong></p>
<ul class="simple">
<li><p>Dirk Alders &lt;<a class="reference external" href="mailto:sudo-dirk&#37;&#52;&#48;mount-mockery&#46;de">sudo-dirk<span>&#64;</span>mount-mockery<span>&#46;</span>de</a>&gt;</p></li>
</ul>
<p><strong>Description:</strong></p>
<blockquote>
<div><p>This Module supports a client/ server tcp socket connection.</p>
</div></blockquote>
<p><strong>Submodules:</strong></p>
<ul class="simple">
<li><p><a class="reference internal" href="#tcp_socket.tcp_client" title="tcp_socket.tcp_client"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_socket.tcp_client</span></code></a></p></li>
<li><p><a class="reference internal" href="#tcp_socket.tcp_client_stp" title="tcp_socket.tcp_client_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_socket.tcp_client_stp</span></code></a></p></li>
<li><p><a class="reference internal" href="#tcp_socket.tcp_server" title="tcp_socket.tcp_server"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_socket.tcp_server</span></code></a></p></li>
<li><p><a class="reference internal" href="#tcp_socket.tcp_server_stp" title="tcp_socket.tcp_server_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_socket.tcp_server_stp</span></code></a></p></li>
</ul>
<p><strong>Unittest:</strong></p>
<blockquote>
<div><p>See also the <a class="reference download internal" download="" href="_downloads/6f8b274225e547e910ea349a3a9f4285/unittest.pdf"><code class="xref download docutils literal notranslate"><span class="pre">unittest</span></code></a> documentation.</p>
</div></blockquote>
<p><strong>Module Documentation:</strong></p>
</section>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_base">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_base</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rx_tx_log_lvl</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base" title="Link to this definition"></a></dt>
<dd><p>This is the base class for other classes in this module.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This class is not designed for direct usage.</p>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.client_address">
<span class="sig-name descname"><span class="pre">client_address</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.client_address" title="Link to this definition"></a></dt>
<dd><p>This method returns the address of the connected client.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>The client address.</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>str</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.close">
<span class="sig-name descname"><span class="pre">close</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.close" title="Link to this definition"></a></dt>
<dd><p>This method closes the connected communication channel, if exists.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.init_channel_name">
<span class="sig-name descname"><span class="pre">init_channel_name</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.init_channel_name" title="Link to this definition"></a></dt>
<dd><p>With this Method, the channel name for logging can be changed.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.is_connected">
<span class="sig-name descname"><span class="pre">is_connected</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.is_connected" title="Link to this definition"></a></dt>
<dd><p>With this Method the connection status can be identified.</p>
<dl class="field-list simple">
<dt class="field-odd">Returns<span class="colon">:</span></dt>
<dd class="field-odd"><p>True, if a connection is established, otherwise False.</p>
</dd>
<dt class="field-even">Return type<span class="colon">:</span></dt>
<dd class="field-even"><p>bool</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.receive">
<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">num</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.receive" title="Link to this definition"></a></dt>
<dd><p>This method returns received data.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>timeout</strong> (<em>float</em>) The timeout for receiving data (at least after the timeout the method returns data or None).</p></li>
<li><p><strong>num</strong> (<em>int</em>) the number of bytes to receive (use None to get all available data).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The received data.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bytes</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.register_callback">
<span class="sig-name descname"><span class="pre">register_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.register_callback" title="Link to this definition"></a></dt>
<dd><p>This method stores the callback which is executed, if data is available. You need to execute <a class="reference internal" href="#tcp_socket.tcp_base.receive" title="tcp_socket.tcp_base.receive"><code class="xref py py-func docutils literal notranslate"><span class="pre">receive()</span></code></a> of this instance
given as first argument.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>callback</strong> The callback which will be executed, when data is available.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.register_connect_callback">
<span class="sig-name descname"><span class="pre">register_connect_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.register_connect_callback" title="Link to this definition"></a></dt>
<dd><p>This method stores the callback which is executed, if a connection is established.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>callback</strong> The callback which will be executed, when a connection is established.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.register_disconnect_callback">
<span class="sig-name descname"><span class="pre">register_disconnect_callback</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">callback</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.register_disconnect_callback" title="Link to this definition"></a></dt>
<dd><p>This method stores the callback which is executed, after the connection is lost.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>callback</strong> The callback which will be executed, after the connection is lost.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base.send">
<span class="sig-name descname"><span class="pre">send</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base.send" title="Link to this definition"></a></dt>
<dd><p>This method sends data via the initiated communication channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>bytes</em>) The data to be send over the communication channel.</p></li>
<li><p><strong>timeout</strong> (<em>float</em>) The timeout for sending data (e.g. time to establish new connection).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True if data had been sent, otherwise False.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_base_stp">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_base_stp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base_stp" title="Link to this definition"></a></dt>
<dd><p>This is the base class for other classes in this module. See also parent <a class="reference internal" href="#tcp_socket.tcp_base" title="tcp_socket.tcp_base"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_base</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This class is not designed for direct usage.</p>
</div>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base_stp.receive">
<span class="sig-name descname"><span class="pre">receive</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base_stp.receive" title="Link to this definition"></a></dt>
<dd><p>This method returns one received messages via the initiated communication channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>timeout</strong> (<em>float</em>) The timeout for receiving data (at least after the timeout the method returns data or None).</p>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>The received data.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bytes</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="tcp_socket.tcp_base_stp.send">
<span class="sig-name descname"><span class="pre">send</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">data</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">timeout</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">1</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_base_stp.send" title="Link to this definition"></a></dt>
<dd><p>This method sends one stp message via the initiated communication channel.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>data</strong> (<em>bytes</em>) The message to be send over the communication channel.</p></li>
<li><p><strong>timeout</strong> (<em>float</em>) The timeout for sending data (e.g. time to establish new connection).</p></li>
</ul>
</dd>
<dt class="field-even">Returns<span class="colon">:</span></dt>
<dd class="field-even"><p>True if data had been sent, otherwise False.</p>
</dd>
<dt class="field-odd">Return type<span class="colon">:</span></dt>
<dd class="field-odd"><p>bool</p>
</dd>
</dl>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_client">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_client</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rx_tx_log_lvl</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_client" title="Link to this definition"></a></dt>
<dd><p>This class creates a tcp-client for transfering a serial stream of bytes (characters). See also parent <a class="reference internal" href="#tcp_socket.tcp_base" title="tcp_socket.tcp_base"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_base</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You need a running <a class="reference internal" href="#tcp_socket.tcp_server" title="tcp_socket.tcp_server"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_server</span></code></a> listening at the given IP and Port to be able to communicate.</p>
</div>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">tcp_socket</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mirror_callback</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="k">return</span> <span class="n">data</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">tcp_client</span><span class="p">(</span><span class="s1">&#39;127.0.0.1&#39;</span><span class="p">,</span> <span class="mi">17000</span><span class="p">)</span>
<span class="n">c</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;abc&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;The Client received: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">repr</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">receive</span><span class="p">()))</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">established</span><span class="o">...</span> <span class="p">(</span><span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17000</span><span class="p">)</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">The</span> <span class="n">Client</span> <span class="n">received</span><span class="p">:</span> <span class="sa">b</span><span class="s1">&#39;abc&#39;</span>
</pre></div>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_client_stp">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_client_stp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_client_stp" title="Link to this definition"></a></dt>
<dd><p>This class creates a tcp-client for transfering a message. The bytes will be packed on send and unpacked on receive. See also parents <a class="reference internal" href="#tcp_socket.tcp_client" title="tcp_socket.tcp_client"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_client</span></code></a> and <a class="reference internal" href="#tcp_socket.tcp_base_stp" title="tcp_socket.tcp_base_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_base_stp</span></code></a>.
See <code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools.stp</span></code> for more information on packing and unpacking.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You need a running <a class="reference internal" href="#tcp_socket.tcp_server_stp" title="tcp_socket.tcp_server_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_server_stp</span></code></a> listening at the given IP and Port to be able to communicate.</p>
</div>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">tcp_socket</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mirror_callback</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="k">return</span> <span class="n">data</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">tcp_client_stp</span><span class="p">(</span><span class="s1">&#39;127.0.0.1&#39;</span><span class="p">,</span> <span class="mi">17017</span><span class="p">)</span>
<span class="n">c</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="sa">b</span><span class="s1">&#39;abc&#39;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;The Client received: </span><span class="si">%s</span><span class="s1">&#39;</span> <span class="o">%</span> <span class="nb">repr</span><span class="p">(</span><span class="n">c</span><span class="o">.</span><span class="n">receive</span><span class="p">()))</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">established</span><span class="o">...</span> <span class="p">(</span><span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17017</span><span class="p">)</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(7): 3a 3c 61 62 63 3a 3e&quot;</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(7): 3a 3c 61 62 63 3a 3e&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_IDLE</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_1</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">start</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">c</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_1</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_STORE_DATA</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_STORE_DATA</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_2</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">end</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">e</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">storing</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_2</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_IDLE</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">message</span> <span class="n">identified</span> <span class="o">-</span> <span class="p">(</span><span class="mi">3</span><span class="p">):</span> <span class="mi">61</span> <span class="mi">62</span> <span class="mi">63</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">client</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">The</span> <span class="n">Client</span> <span class="n">received</span><span class="p">:</span> <span class="sa">b</span><span class="s1">&#39;abc&#39;</span>
</pre></div>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_server">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_server</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">rx_tx_log_lvl</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">20</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_server" title="Link to this definition"></a></dt>
<dd><p>This class creates a tcp-server for transfering a serial stream of bytes (characters). See also parent <a class="reference internal" href="#tcp_socket.tcp_base" title="tcp_socket.tcp_base"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_base</span></code></a>.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You need a <a class="reference internal" href="#tcp_socket.tcp_client" title="tcp_socket.tcp_client"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_client</span></code></a> to communicate with the server.</p>
</div>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">tcp_socket</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mirror_callback</span><span class="p">(</span><span class="n">tcp</span><span class="p">):</span>
<span class="n">tcp</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">tcp</span><span class="o">.</span><span class="n">receive</span><span class="p">())</span>
<span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">tcp_server</span><span class="p">(</span><span class="s1">&#39;127.0.0.1&#39;</span><span class="p">,</span> <span class="mi">17000</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">register_callback</span><span class="p">(</span><span class="n">mirror_callback</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">s</span><span class="o">.</span><span class="n">is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="mi">10</span><span class="p">:</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">.1</span><span class="p">)</span> <span class="c1"># wait for a connection</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="n">s</span><span class="o">.</span><span class="n">is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="mi">10</span><span class="p">:</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">.1</span><span class="p">)</span> <span class="c1"># wait for disconnect</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Server</span> <span class="n">listening</span> <span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17000</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">established</span><span class="o">...</span> <span class="p">(</span><span class="kn">from</span><span class="w"> </span><span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17000</span><span class="p">)</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">lost</span><span class="o">...</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Server</span> <span class="n">listening</span> <span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17000</span>
</pre></div>
</div>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="tcp_socket.tcp_server_stp">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">tcp_socket.</span></span><span class="sig-name descname"><span class="pre">tcp_server_stp</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">host</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">channel_name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#tcp_socket.tcp_server_stp" title="Link to this definition"></a></dt>
<dd><p>This class creates a tcp-server for transfering a message. The bytes will be packed on send and unpacked on receive. See also parents <a class="reference internal" href="#tcp_socket.tcp_server" title="tcp_socket.tcp_server"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_server</span></code></a> and <a class="reference internal" href="#tcp_socket.tcp_base_stp" title="tcp_socket.tcp_base_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_base_stp</span></code></a>.
See <code class="xref py py-mod docutils literal notranslate"><span class="pre">stringtools.stp</span></code> for more information on packing and unpacking.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>host</strong> (<em>str</em>) The host IP for the TCP socket functionality</p></li>
<li><p><strong>port</strong> (<em>int</em>) The port for the TCP socket functionality</p></li>
<li><p><strong>channel_name</strong> (<em>str</em>) The name for the logging channel</p></li>
</ul>
</dd>
</dl>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>You need a <a class="reference internal" href="#tcp_socket.tcp_client_stp" title="tcp_socket.tcp_client_stp"><code class="xref py py-class docutils literal notranslate"><span class="pre">tcp_client_stp</span></code></a> to communicate with the server.</p>
</div>
<p><strong>Example:</strong></p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">sys</span> <span class="c1"># nopep8</span>
<span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">append</span><span class="p">(</span><span class="s1">&#39;../..&#39;</span><span class="p">)</span> <span class="c1"># nopep8</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">time</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">tcp_socket</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">report</span>
<span class="k">def</span><span class="w"> </span><span class="nf">mirror_callback</span><span class="p">(</span><span class="n">tcp</span><span class="p">):</span>
<span class="n">tcp</span><span class="o">.</span><span class="n">send</span><span class="p">(</span><span class="n">tcp</span><span class="o">.</span><span class="n">receive</span><span class="p">())</span>
<span class="n">logger</span> <span class="o">=</span> <span class="n">report</span><span class="o">.</span><span class="n">default_logging_config</span><span class="p">()</span>
<span class="n">s</span> <span class="o">=</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">tcp_server_stp</span><span class="p">(</span><span class="s1">&#39;127.0.0.1&#39;</span><span class="p">,</span> <span class="mi">17017</span><span class="p">)</span>
<span class="n">s</span><span class="o">.</span><span class="n">register_callback</span><span class="p">(</span><span class="n">mirror_callback</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="ow">not</span> <span class="n">s</span><span class="o">.</span><span class="n">is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="mi">10</span><span class="p">:</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">.1</span><span class="p">)</span> <span class="c1"># wait for a connection</span>
<span class="n">i</span> <span class="o">=</span> <span class="mi">0</span>
<span class="k">while</span> <span class="n">s</span><span class="o">.</span><span class="n">is_connected</span><span class="p">()</span> <span class="ow">and</span> <span class="n">i</span> <span class="o">&lt;=</span> <span class="mi">10</span><span class="p">:</span>
<span class="n">i</span> <span class="o">+=</span> <span class="mi">1</span>
<span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mf">.1</span><span class="p">)</span> <span class="c1"># wait for disconnect</span>
</pre></div>
</div>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span> <span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Server</span> <span class="n">listening</span> <span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17017</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">established</span><span class="o">...</span> <span class="p">(</span><span class="kn">from</span><span class="w"> </span><span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17017</span><span class="p">)</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Cleaning</span> <span class="n">up</span> <span class="n">receive</span><span class="o">-</span><span class="n">buffer</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(7): 3a 3c 61 62 63 3a 3e&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_IDLE</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_1</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">start</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">c</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_1</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_STORE_DATA</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">data</span> <span class="n">sync</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_STORE_DATA</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_ESCAPE_2</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">end</span> <span class="n">pattern</span> <span class="p">(</span><span class="mi">3</span><span class="n">a</span> <span class="mi">3</span><span class="n">e</span><span class="p">)</span> <span class="n">received</span> <span class="o">=&gt;</span> <span class="n">storing</span> <span class="n">message</span> <span class="ow">and</span> <span class="n">changing</span> <span class="n">state</span> <span class="n">STP_STATE_ESCAPE_2</span> <span class="o">-&gt;</span> <span class="n">STP_STATE_IDLE</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">stringtools</span><span class="o">.</span><span class="n">stp</span> <span class="o">-</span> <span class="n">STP</span><span class="p">:</span> <span class="n">message</span> <span class="n">identified</span> <span class="o">-</span> <span class="p">(</span><span class="mi">3</span><span class="p">):</span> <span class="mi">61</span> <span class="mi">62</span> <span class="mi">63</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">RX</span> <span class="o">&lt;-</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">DEBUG</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(7): 3a 3c 61 62 63 3a 3e&quot;</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">TX</span> <span class="o">-&gt;</span> <span class="s2">&quot;(3): 61 62 63&quot;</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Connection</span> <span class="n">lost</span><span class="o">...</span>
<span class="n">INFO</span> <span class="o">-</span> <span class="n">tcp_socket</span><span class="o">.</span><span class="n">all_others</span> <span class="o">-</span> <span class="n">comm</span><span class="o">-</span><span class="n">server</span><span class="p">:</span> <span class="n">Server</span> <span class="n">listening</span> <span class="n">to</span> <span class="mf">127.0.0.1</span><span class="p">:</span><span class="mi">17017</span>
</pre></div>
</div>
</dd></dl>
<div class="toctree-wrapper compound">
</div>
</section>
<section id="indices-and-tables">
<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Link to this heading"></a></h1>
<ul class="simple">
<li><p><a class="reference internal" href="genindex.html"><span class="std std-ref">Index</span></a></p></li>
<li><p><a class="reference internal" href="py-modindex.html"><span class="std std-ref">Module Index</span></a></p></li>
<li><p><a class="reference internal" href="search.html"><span class="std std-ref">Search Page</span></a></p></li>
</ul>
</section>
<div class="clearer"></div>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper">
<div>
<h3><a href="#">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Welcome to cachingss documentation!</a><ul>
<li><a class="reference internal" href="#tcp-socket-tcp-socket">tcp_socket (TCP Socket)</a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base"><code class="docutils literal notranslate"><span class="pre">tcp_base</span></code></a><ul>
<li><a class="reference internal" href="#tcp_socket.tcp_base.client_address"><code class="docutils literal notranslate"><span class="pre">tcp_base.client_address()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.close"><code class="docutils literal notranslate"><span class="pre">tcp_base.close()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.init_channel_name"><code class="docutils literal notranslate"><span class="pre">tcp_base.init_channel_name()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.is_connected"><code class="docutils literal notranslate"><span class="pre">tcp_base.is_connected()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.receive"><code class="docutils literal notranslate"><span class="pre">tcp_base.receive()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_connect_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_connect_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.register_disconnect_callback"><code class="docutils literal notranslate"><span class="pre">tcp_base.register_disconnect_callback()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base.send"><code class="docutils literal notranslate"><span class="pre">tcp_base.send()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp</span></code></a><ul>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp.receive"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp.receive()</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_base_stp.send"><code class="docutils literal notranslate"><span class="pre">tcp_base_stp.send()</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#tcp_socket.tcp_client"><code class="docutils literal notranslate"><span class="pre">tcp_client</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_client_stp"><code class="docutils literal notranslate"><span class="pre">tcp_client_stp</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_server"><code class="docutils literal notranslate"><span class="pre">tcp_server</span></code></a></li>
<li><a class="reference internal" href="#tcp_socket.tcp_server_stp"><code class="docutils literal notranslate"><span class="pre">tcp_server_stp</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
</ul>
</div>
<div role="note" aria-label="source link">
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/index.rst.txt"
rel="nofollow">Show Source</a></li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="Related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="py-modindex.html" title="Python Module Index"
>modules</a> |</li>
<li><img src="_static/py.svg" alt="Python logo" style="vertical-align: middle; margin-top: -1px"></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
<a href="#">tcp_socket documentation</a> &#187;
</li>
<li class="nav-item nav-item-this"><a href="">Welcome to cachingss documentation!</a></li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="search.html" method="get">
<input placeholder="Quick search" aria-label="Quick search" type="search" name="q" id="search-box">
<input type="submit" value="Go">
</form>
</div>
|
</li>
<li class="right">
<label class="theme-selector-label">
Theme
<select class="theme-selector" oninput="activateTheme(this.value)">
<option value="auto" selected>Auto</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
</label> |</li>
</ul>
</div>
<div class="footer">
&copy;
Copyright
2025, Dirk Alders.
<br>
This page is licensed under the Python Software Foundation License Version 2.
<br>
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br>
<br>
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br>
<br>
<br>
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 8.2.3.
</div>
</body>
</html>