uvw/tcp_8h_source.html
2023-05-22 11:13:58 +02:00

184 lines
24 KiB
HTML
Raw Permalink 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 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvw: src/uvw/tcp.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvw<span id="projectnumber">&#160;3.1.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_98934c98f70735fe3a272005a9eb8736.html">uvw</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle"><div class="title">tcp.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno"> 1</span><span class="preprocessor">#ifndef UVW_TCP_INCLUDE_H</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno"> 2</span><span class="preprocessor">#define UVW_TCP_INCLUDE_H</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno"> 3</span> </div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span><span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;uv.h&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#include &quot;config.h&quot;</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &quot;enum.hpp&quot;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &quot;request.hpp&quot;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &quot;stream.h&quot;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &quot;util.h&quot;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">namespace </span><a class="code hl_namespace" href="namespaceuvw.html">uvw</a> {</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span><span class="keyword">namespace </span>details {</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> </div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span><span class="keyword">enum class</span> uvw_tcp_flags : std::underlying_type_t&lt;uv_tcp_flags&gt; {</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> IPV6ONLY = UV_TCP_IPV6ONLY,</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> _UVW_ENUM = 0</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span>};</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> </div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span>}</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html"> 43</a></span><span class="keyword">class </span><a class="code hl_class" href="classuvw_1_1tcp__handle.html">tcp_handle</a> final: <span class="keyword">public</span> <a class="code hl_class" href="classuvw_1_1stream__handle.html">stream_handle</a>&lt;tcp_handle, uv_tcp_t&gt; {</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span><span class="keyword">public</span>:</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">using </span>time = std::chrono::duration&lt;unsigned int&gt;;</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="keyword">using </span>tcp_flags = details::uvw_tcp_flags;</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">using </span><a class="code hl_struct" href="structuvw_1_1ipv4.html">ipv4</a> = <a class="code hl_struct" href="structuvw_1_1ipv4.html">uvw::ipv4</a>;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="keyword">using </span><a class="code hl_struct" href="structuvw_1_1ipv6.html">ipv6</a> = <a class="code hl_struct" href="structuvw_1_1ipv6.html">uvw::ipv6</a>;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keyword">explicit</span> <a class="code hl_class" href="classuvw_1_1tcp__handle.html">tcp_handle</a>(loop::token token, std::shared_ptr&lt;loop&gt; ref, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> f = {});</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a0cb5490996adb8ae112927a036aee85d"> 56</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a0cb5490996adb8ae112927a036aee85d">init</a>() final;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a6471fd78e04097d697f377a09f21b074"> 69</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a6471fd78e04097d697f377a09f21b074">open</a>(<a class="code hl_typedef" href="namespaceuvw.html#aa64a7948231fbdec46df43be0c24f806">os_socket_handle</a> socket);</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#ab6c83d92ee6ace5631592b361b14cfc0"> 76</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#ab6c83d92ee6ace5631592b361b14cfc0">no_delay</a>(<span class="keywordtype">bool</span> value = false);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a03b637f533caff624152860f403a3ce2"> 85</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a03b637f533caff624152860f403a3ce2">keep_alive</a>(<span class="keywordtype">bool</span> enable = false, time val = time{0});</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a99480e7a5d3ece02605268da008ecb4d"> 101</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a99480e7a5d3ece02605268da008ecb4d">simultaneous_accepts</a>(<span class="keywordtype">bool</span> enable = <span class="keyword">true</span>);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a2ca6004d021abc9bab6340d8b7371c02"> 118</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a2ca6004d021abc9bab6340d8b7371c02">bind</a>(<span class="keyword">const</span> sockaddr &amp;addr, tcp_flags opts = tcp_flags::_UVW_ENUM);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a305d6d18160ca1c896e95cf77c5c8475"> 136</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a305d6d18160ca1c896e95cf77c5c8475">bind</a>(<span class="keyword">const</span> std::string &amp;ip, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> port, tcp_flags opts = tcp_flags::_UVW_ENUM);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#ade65abcde580bdf8458512966d16deb4"> 153</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#ade65abcde580bdf8458512966d16deb4">bind</a>(<a class="code hl_struct" href="structuvw_1_1socket__address.html">socket_address</a> addr, tcp_flags opts = tcp_flags::_UVW_ENUM);</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#ad9dc0685013fc8fb3e1c9effabdda4d2"> 160</a></span> <a class="code hl_struct" href="structuvw_1_1socket__address.html">socket_address</a> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#ad9dc0685013fc8fb3e1c9effabdda4d2">sock</a>() const noexcept;</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#ac02b6d53c63af19d7a972c4b9d950e17"> 167</a></span> <a class="code hl_struct" href="structuvw_1_1socket__address.html">socket_address</a> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#ac02b6d53c63af19d7a972c4b9d950e17">peer</a>() const noexcept;</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a36226129a77639858cc152080c00442a"> 181</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a36226129a77639858cc152080c00442a">connect</a>(const sockaddr &amp;addr);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#af1ce16492f9094bc80514b5852de2f97"> 192</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a36226129a77639858cc152080c00442a">connect</a>(const std::<span class="keywordtype">string</span> &amp;ip, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> port);</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a0f458a7a7883768e6514e24fcd6c1077"> 202</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a36226129a77639858cc152080c00442a">connect</a>(<a class="code hl_struct" href="structuvw_1_1socket__address.html">socket_address</a> addr);</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="classuvw_1_1tcp__handle.html#a5737d2d58f61d266be2e8fb7d3057838"> 216</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvw_1_1tcp__handle.html#a5737d2d58f61d266be2e8fb7d3057838">close_reset</a>();</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span>private:</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> enum {</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> DEFAULT,</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> FLAGS</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> } tag;</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> flags;</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span>};</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span>} <span class="comment">// namespace uvw</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="preprocessor"># include &quot;tcp.cpp&quot;</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="preprocessor">#endif </span><span class="comment">// UVW_TCP_INCLUDE_H</span></div>
<div class="ttc" id="aclassuvw_1_1stream__handle_html"><div class="ttname"><a href="classuvw_1_1stream__handle.html">uvw::stream_handle</a></div><div class="ttdoc">The stream handle.</div><div class="ttdef"><b>Definition:</b> <a href="stream_8h_source.html#l00108">stream.h:108</a></div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html"><div class="ttname"><a href="classuvw_1_1tcp__handle.html">uvw::tcp_handle</a></div><div class="ttdoc">The TCP handle.</div><div class="ttdef"><b>Definition:</b> <a href="tcp_8h_source.html#l00043">tcp.h:43</a></div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a03b637f533caff624152860f403a3ce2"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a03b637f533caff624152860f403a3ce2">uvw::tcp_handle::keep_alive</a></div><div class="ttdeci">bool keep_alive(bool enable=false, time val=time{0})</div><div class="ttdoc">Enables/Disables TCP keep-alive.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a0cb5490996adb8ae112927a036aee85d"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a0cb5490996adb8ae112927a036aee85d">uvw::tcp_handle::init</a></div><div class="ttdeci">int init() final</div><div class="ttdoc">Initializes the handle. No socket is created as of yet.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a2ca6004d021abc9bab6340d8b7371c02"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a2ca6004d021abc9bab6340d8b7371c02">uvw::tcp_handle::bind</a></div><div class="ttdeci">int bind(const sockaddr &amp;addr, tcp_flags opts=tcp_flags::_UVW_ENUM)</div><div class="ttdoc">Binds the handle to an address and port.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a305d6d18160ca1c896e95cf77c5c8475"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a305d6d18160ca1c896e95cf77c5c8475">uvw::tcp_handle::bind</a></div><div class="ttdeci">int bind(const std::string &amp;ip, unsigned int port, tcp_flags opts=tcp_flags::_UVW_ENUM)</div><div class="ttdoc">Binds the handle to an address and port.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a36226129a77639858cc152080c00442a"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a36226129a77639858cc152080c00442a">uvw::tcp_handle::connect</a></div><div class="ttdeci">int connect(const sockaddr &amp;addr)</div><div class="ttdoc">Establishes an IPv4 or IPv6 TCP connection.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a5737d2d58f61d266be2e8fb7d3057838"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a5737d2d58f61d266be2e8fb7d3057838">uvw::tcp_handle::close_reset</a></div><div class="ttdeci">int close_reset()</div><div class="ttdoc">Resets a TCP connection by sending a RST packet.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a6471fd78e04097d697f377a09f21b074"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a6471fd78e04097d697f377a09f21b074">uvw::tcp_handle::open</a></div><div class="ttdeci">int open(os_socket_handle socket)</div><div class="ttdoc">Opens an existing file descriptor or SOCKET as a TCP handle.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_a99480e7a5d3ece02605268da008ecb4d"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#a99480e7a5d3ece02605268da008ecb4d">uvw::tcp_handle::simultaneous_accepts</a></div><div class="ttdeci">bool simultaneous_accepts(bool enable=true)</div><div class="ttdoc">Enables/Disables simultaneous asynchronous accept requests.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_ab6c83d92ee6ace5631592b361b14cfc0"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#ab6c83d92ee6ace5631592b361b14cfc0">uvw::tcp_handle::no_delay</a></div><div class="ttdeci">bool no_delay(bool value=false)</div><div class="ttdoc">Enables/Disables Nagles algorithm.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_ac02b6d53c63af19d7a972c4b9d950e17"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#ac02b6d53c63af19d7a972c4b9d950e17">uvw::tcp_handle::peer</a></div><div class="ttdeci">socket_address peer() const noexcept</div><div class="ttdoc">Gets the address of the peer connected to the handle.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_ad9dc0685013fc8fb3e1c9effabdda4d2"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#ad9dc0685013fc8fb3e1c9effabdda4d2">uvw::tcp_handle::sock</a></div><div class="ttdeci">socket_address sock() const noexcept</div><div class="ttdoc">Gets the current address to which the handle is bound.</div></div>
<div class="ttc" id="aclassuvw_1_1tcp__handle_html_ade65abcde580bdf8458512966d16deb4"><div class="ttname"><a href="classuvw_1_1tcp__handle.html#ade65abcde580bdf8458512966d16deb4">uvw::tcp_handle::bind</a></div><div class="ttdeci">int bind(socket_address addr, tcp_flags opts=tcp_flags::_UVW_ENUM)</div><div class="ttdoc">Binds the handle to an address and port.</div></div>
<div class="ttc" id="anamespaceuvw_html"><div class="ttname"><a href="namespaceuvw.html">uvw</a></div><div class="ttdoc">uvw default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00008">async.h:8</a></div></div>
<div class="ttc" id="anamespaceuvw_html_aa64a7948231fbdec46df43be0c24f806"><div class="ttname"><a href="namespaceuvw.html#aa64a7948231fbdec46df43be0c24f806">uvw::os_socket_handle</a></div><div class="ttdeci">details::uv_type_wrapper&lt; uv_os_sock_t &gt; os_socket_handle</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00086">util.h:86</a></div></div>
<div class="ttc" id="astructuvw_1_1ipv4_html"><div class="ttname"><a href="structuvw_1_1ipv4.html">uvw::ipv4</a></div><div class="ttdoc">The IPv4 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00202">util.h:202</a></div></div>
<div class="ttc" id="astructuvw_1_1ipv6_html"><div class="ttname"><a href="structuvw_1_1ipv6.html">uvw::ipv6</a></div><div class="ttdoc">The IPv6 tag.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00209">util.h:209</a></div></div>
<div class="ttc" id="astructuvw_1_1socket__address_html"><div class="ttname"><a href="structuvw_1_1socket__address.html">uvw::socket_address</a></div><div class="ttdoc">Address representation.</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00214">util.h:214</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6
</small></address>
</body>
</html>