<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> <title>Async: Async::UdpSocket Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <link href="doxygen.css" rel="stylesheet" type="text/css"/> </head> <body> <!-- Generated by Doxygen 1.6.2-20100208 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li class="current"><a href="annotated.html"><span>Classes</span></a></li> <li><a href="files.html"><span>Files</span></a></li> <li><a href="dirs.html"><span>Directories</span></a></li> <li><a href="examples.html"><span>Examples</span></a></li> </ul> </div> <div class="tabs"> <ul> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> <div class="navpath"><a class="el" href="namespaceAsync.html">Async</a>::<a class="el" href="classAsync_1_1UdpSocket.html">UdpSocket</a> </div> </div> <div class="contents"> <h1>Async::UdpSocket Class Reference</h1><!-- doxytag: class="Async::UdpSocket" --> <p>A class for working with UDP sockets. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a>></code></p> <p><a href="classAsync_1_1UdpSocket-members.html">List of all members.</a></p> <h2>Public Member Functions</h2> <ul> <li><a class="el" href="classAsync_1_1UdpSocket.html#a50c2829e14c3494e4a0974e01045fa08">UdpSocket</a> (uint16_t local_port=0) <dl class="el"><dd class="mdescRight">Constructor. <a href="#a50c2829e14c3494e4a0974e01045fa08"></a><br/></dl><li><a class="el" href="classAsync_1_1UdpSocket.html#ad0cba067b74e37055070660351d3f498">~UdpSocket</a> (void) <dl class="el"><dd class="mdescRight">Destructor. <a href="#ad0cba067b74e37055070660351d3f498"></a><br/></dl><li>bool <a class="el" href="classAsync_1_1UdpSocket.html#aa3a7198c35610f59952cc22b8d434058">initOk</a> (void) const <dl class="el"><dd class="mdescRight">Check if the initialization was ok. <a href="#aa3a7198c35610f59952cc22b8d434058"></a><br/></dl><li>bool <a class="el" href="classAsync_1_1UdpSocket.html#a2b41c21485a4b8b830d27f4a8d7b3a82">write</a> (const <a class="el" href="classAsync_1_1IpAddress.html">IpAddress</a> &remote_ip, int remote_port, const void *buf, int count) <dl class="el"><dd class="mdescRight">Write data to the remote host. <a href="#a2b41c21485a4b8b830d27f4a8d7b3a82"></a><br/></dl></ul> <h2>Public Attributes</h2> <ul> <li>SigC::Signal3< void, const <br class="typebreak"/> <a class="el" href="classAsync_1_1IpAddress.html">IpAddress</a> &, void *, int > <a class="el" href="classAsync_1_1UdpSocket.html#a670339d22665dd7a506801d9519f04ae">dataReceived</a> <dl class="el"><dd class="mdescRight">A signal that is emitted when data has been received. <a href="#a670339d22665dd7a506801d9519f04ae"></a><br/></dl><li>SigC::Signal1< void, bool > <a class="el" href="classAsync_1_1UdpSocket.html#ac7f9dc2df3f0b4b6947cc98374816e84">sendBufferFull</a> <dl class="el"><dd class="mdescRight">A signal that is emitted when the send buffer is full. <a href="#ac7f9dc2df3f0b4b6947cc98374816e84"></a><br/></dl></ul> <hr/><a name="_details"></a><h2>Detailed Description</h2> <p>A class for working with UDP sockets. </p> <dl class="author"><dt><b>Author:</b></dt><dd>Tobias Blomberg </dd></dl> <dl class="date"><dt><b>Date:</b></dt><dd>2003-04-26</dd></dl> <p>This class is used to work with UDP sockets. An example usage is shown below.</p> <div class="fragment"><pre class="fragment"><span class="preprocessor">#include <iostream></span> <span class="preprocessor">#include <<a class="code" href="AsyncCppApplication_8h.html" title="The core class for writing asyncronous cpp applications.">AsyncCppApplication.h</a>></span> <span class="preprocessor">#include <<a class="code" href="AsyncUdpSocket_8h.html" title="Contains a class for using UDP sockets.">AsyncUdpSocket.h</a>></span> <span class="preprocessor">#include <<a class="code" href="AsyncIpAddress_8h.html" title="Platform independent representation of an IP address.">AsyncIpAddress.h</a>></span> <span class="keyword">using namespace </span>std; <span class="keyword">using namespace </span>Async; <span class="keyword">class </span>MyClass : <span class="keyword">public</span> SigC::Object { <span class="keyword">public</span>: MyClass(<span class="keywordtype">void</span>) { sock = <span class="keyword">new</span> <a class="code" href="classAsync_1_1UdpSocket.html#a50c2829e14c3494e4a0974e01045fa08" title="Constructor.">UdpSocket</a>(12345); sock->dataReceived.connect(slot(*<span class="keyword">this</span>, &MyClass::onDataReceived)); IpAddress addr(<span class="stringliteral">"127.0.0.1"</span>); sock->write(addr, 12345, <span class="stringliteral">"Hello, UDP!\n"</span>, 13); } ~MyClass(<span class="keywordtype">void</span>) { <span class="keyword">delete</span> sock; } <span class="keyword">private</span>: <a class="code" href="classAsync_1_1UdpSocket.html#a50c2829e14c3494e4a0974e01045fa08" title="Constructor.">UdpSocket</a> * sock; <span class="keywordtype">void</span> onDataReceived(<span class="keyword">const</span> IpAddress& addr, <span class="keywordtype">void</span> *buf, <span class="keywordtype">int</span> count) { cout << <span class="stringliteral">"Data received from "</span> << addr << <span class="stringliteral">": "</span> << <span class="keyword">static_cast<</span><span class="keywordtype">char</span> *<span class="keyword">></span>(buf); <a class="code" href="classAsync_1_1Application.html#aa6d446d6b333e0a1e5cc1400c07aa898" title="Get the one and only application instance.">Application::app</a>().quit(); } }; <span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) { CppApplication app; MyClass my_class; app.exec(); } </pre></div> <dl><dt><b>Examples: </b></dt><dd> <p><a class="el" href="AsyncUdpSocket__demo_8cpp-example.html#_a0">AsyncUdpSocket_demo.cpp</a>.</p> </dd> </dl> <p>Definition at line <a class="el" href="AsyncUdpSocket_8h_source.html#l00124">124</a> of file <a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a>.</p> <hr/><h2>Constructor & Destructor Documentation</h2> <a class="anchor" id="a50c2829e14c3494e4a0974e01045fa08"></a><!-- doxytag: member="Async::UdpSocket::UdpSocket" ref="a50c2829e14c3494e4a0974e01045fa08" args="(uint16_t local_port=0)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Async::UdpSocket::UdpSocket </td> <td>(</td> <td class="paramtype">uint16_t </td> <td class="paramname"> <em>local_port</em> = <code>0</code></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Constructor. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>local_port</em> </td><td>The local port to use. If not specified, a random local port will be used. </td></tr> </table> </dd> </dl> </div> </div> <a class="anchor" id="ad0cba067b74e37055070660351d3f498"></a><!-- doxytag: member="Async::UdpSocket::~UdpSocket" ref="ad0cba067b74e37055070660351d3f498" args="(void)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">Async::UdpSocket::~UdpSocket </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td></td> </tr> </table> </div> <div class="memdoc"> <p>Destructor. </p> </div> </div> <hr/><h2>Member Function Documentation</h2> <a class="anchor" id="aa3a7198c35610f59952cc22b8d434058"></a><!-- doxytag: member="Async::UdpSocket::initOk" ref="aa3a7198c35610f59952cc22b8d434058" args="(void) const " --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Async::UdpSocket::initOk </td> <td>(</td> <td class="paramtype">void </td> <td class="paramname"></td> <td> ) </td> <td> const<code> [inline]</code></td> </tr> </table> </div> <div class="memdoc"> <p>Check if the initialization was ok. </p> <dl class="return"><dt><b>Returns:</b></dt><dd>Returns <em>true</em> if everything went fine during initialization or <em>false</em> if something went wrong</dd></dl> <p>This function should always be called after constructing the object to see if everything went fine. </p> <p>Definition at line <a class="el" href="AsyncUdpSocket_8h_source.html#l00147">147</a> of file <a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a>.</p> </div> </div> <a class="anchor" id="a2b41c21485a4b8b830d27f4a8d7b3a82"></a><!-- doxytag: member="Async::UdpSocket::write" ref="a2b41c21485a4b8b830d27f4a8d7b3a82" args="(const IpAddress &remote_ip, int remote_port, const void *buf, int count)" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">bool Async::UdpSocket::write </td> <td>(</td> <td class="paramtype">const <a class="el" href="classAsync_1_1IpAddress.html">IpAddress</a> & </td> <td class="paramname"> <em>remote_ip</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>remote_port</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">const void * </td> <td class="paramname"> <em>buf</em>, </td> </tr> <tr> <td class="paramkey"></td> <td></td> <td class="paramtype">int </td> <td class="paramname"> <em>count</em></td><td> </td> </tr> <tr> <td></td> <td>)</td> <td></td><td></td><td></td> </tr> </table> </div> <div class="memdoc"> <p>Write data to the remote host. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>remote_ip</em> </td><td>The IP-address of the remote host </td></tr> <tr><td valign="top"></td><td valign="top"><em>remote_port</em> </td><td>The remote port to use </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>A buffer containing the data to send </td></tr> <tr><td valign="top"></td><td valign="top"><em>count</em> </td><td>The number of bytes to write </td></tr> </table> </dd> </dl> <dl class="return"><dt><b>Returns:</b></dt><dd>Return <em>true</em> on success or <em>false</em> on failure </dd></dl> </div> </div> <hr/><h2>Member Data Documentation</h2> <a class="anchor" id="a670339d22665dd7a506801d9519f04ae"></a><!-- doxytag: member="Async::UdpSocket::dataReceived" ref="a670339d22665dd7a506801d9519f04ae" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SigC::Signal3<void, const <a class="el" href="classAsync_1_1IpAddress.html">IpAddress</a>&, void *, int> <a class="el" href="classAsync_1_1UdpSocket.html#a670339d22665dd7a506801d9519f04ae">Async::UdpSocket::dataReceived</a></td> </tr> </table> </div> <div class="memdoc"> <p>A signal that is emitted when data has been received. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>ip</em> </td><td>The IP-address the data was received from </td></tr> <tr><td valign="top"></td><td valign="top"><em>buf</em> </td><td>The buffer containing the read data </td></tr> <tr><td valign="top"></td><td valign="top"><em>count</em> </td><td>The number of bytes read </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="AsyncUdpSocket_8h_source.html#l00166">166</a> of file <a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a>.</p> </div> </div> <a class="anchor" id="ac7f9dc2df3f0b4b6947cc98374816e84"></a><!-- doxytag: member="Async::UdpSocket::sendBufferFull" ref="ac7f9dc2df3f0b4b6947cc98374816e84" args="" --> <div class="memitem"> <div class="memproto"> <table class="memname"> <tr> <td class="memname">SigC::Signal1<void, bool> <a class="el" href="classAsync_1_1UdpSocket.html#ac7f9dc2df3f0b4b6947cc98374816e84">Async::UdpSocket::sendBufferFull</a></td> </tr> </table> </div> <div class="memdoc"> <p>A signal that is emitted when the send buffer is full. </p> <dl><dt><b>Parameters:</b></dt><dd> <table border="0" cellspacing="2" cellpadding="0"> <tr><td valign="top"></td><td valign="top"><em>is_full</em> </td><td>Set to <em>true</em> if the buffer is full or <em>false</em> if the buffer full condition has been cleared </td></tr> </table> </dd> </dl> <p>Definition at line <a class="el" href="AsyncUdpSocket_8h_source.html#l00173">173</a> of file <a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="AsyncUdpSocket_8h_source.html">AsyncUdpSocket.h</a></li> </ul> </div> <hr class="footer"/><address style="text-align: right;"><small>Generated by <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.2-20100208 </small></address> </body> </html>