⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server_8cc-source.html

📁 C++ TCPIP and UDPIP library of classes
💻 HTML
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>server.cc Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body bgcolor="#ffffff"><!-- Generated by Doxygen 1.2.13.1 --><h1>server.cc</h1><a href="server_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 00034 <font class="preprocessor">#include &lt;iostream.h&gt;</font>00035 <font class="preprocessor">#include &lt;string.h&gt;</font>00036 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>00037 <font class="preprocessor">#include &lt;assert.h&gt;</font>00038 <font class="preprocessor">#include &lt;unistd.h&gt;</font>00039 <font class="preprocessor">#include "<a class="code" href="const_8h.html">const.h</a>"</font>00040 <font class="preprocessor">#include "<a class="code" href="server_8h.html">server.h</a>"</font>00041 00042 <a name="l00043"></a><a class="code" href="server_8cc.html#a0">00043</a> <font class="keyword">extern</font> <font class="keywordtype">int</font> <a class="code" href="server_8cc.html#a0">errno</a>;<a name="l00044"></a><a class="code" href="server_8cc.html#a1">00044</a> <font class="keyword">extern</font> <font class="keywordtype">char</font>* <a class="code" href="server_8cc.html#a1">sys_errlist</a>[];00045 00046 <a name="l00047"></a><a class="code" href="classserver.html#a0">00047</a> <a class="code" href="classserver.html#a0">server :: server</a> (<font class="keywordtype">char</font>* service) : <a class="code" href="classtcpip.html">tcpip</a> ()00048 {00049   <a class="code" href="classserver.html#o0">recived</a> = NULL;00050   <a class="code" href="classserver.html#o1">sock</a> = <a class="code" href="classtcpip.html#b3">passiveUDP</a> (service);00051 }00052 <a name="l00053"></a><a class="code" href="classserver.html#a1">00053</a> <a class="code" href="classserver.html#a1">server :: ~server</a> ()00054 {00055   <font class="keywordflow">if</font> (<a class="code" href="classserver.html#o0">recived</a> != NULL)00056     <font class="keyword">delete</font> <a class="code" href="classserver.html#o0">recived</a>;00057   close (<a class="code" href="classserver.html#o1">sock</a>);00058 }00059 00060 <a name="l00061"></a><a class="code" href="classserver.html#b1">00061</a> <font class="keywordtype">void</font> <a class="code" href="classserver.html#b1">server :: answer</a> (<font class="keywordtype">char</font>* packet)00062 {00063   (void) sendto (<a class="code" href="classserver.html#o1">sock</a>, packet, strlen (packet), 0, (<font class="keyword">struct</font> sockaddr *) &amp;<a class="code" href="classserver.html#o2">addr</a>, <a class="code" href="classserver.html#o3">addr_len</a>);00064 }00065 <a name="l00066"></a><a class="code" href="classserver.html#b2">00066</a> <font class="keywordtype">bool</font> <a class="code" href="classserver.html#b2">server :: listenUDP</a> ()00067 {00068   <font class="keywordtype">char</font> buff[2048];00069   buff[1] = <font class="charliteral">'\0'</font>;00070   <font class="keywordtype">int</font> length = recvfrom (<a class="code" href="classserver.html#o1">sock</a>, buff, <font class="keyword">sizeof</font> (buff), 0, (<font class="keyword">struct</font> sockaddr *) &amp;<a class="code" href="classserver.html#o2">addr</a>, &amp;<a class="code" href="classserver.html#o3">addr_len</a>);00071   <font class="keywordflow">if</font> (length &lt; 0)00072     {00073       cerr &lt;&lt; <a class="code" href="const_8h.html#a0">_NET_ERR_</a> &lt;&lt; <font class="stringliteral">"listen failed: "</font> &lt;&lt; <a class="code" href="server_8cc.html#a1">sys_errlist</a> [<a class="code" href="server_8cc.html#a0">errno</a>] &lt;&lt; <font class="stringliteral">"\n"</font>;00074       <font class="keywordflow">return</font> <font class="keyword">false</font>;00075     }00076   buff[length] = <font class="charliteral">'\0'</font>;00077   <font class="keywordflow">if</font> (<a class="code" href="classserver.html#o0">recived</a> != NULL)00078     <font class="keyword">delete</font> <a class="code" href="classserver.html#o0">recived</a>;00079   <a class="code" href="classserver.html#o0">recived</a> = NULL;00080   <a class="code" href="classserver.html#o0">recived</a> = <font class="keyword">new</font> <font class="keywordtype">char</font> [length+1];00081   assert (<a class="code" href="classserver.html#o0">recived</a> != NULL);00082   strcpy (<a class="code" href="classserver.html#o0">recived</a>, buff);00083   <font class="keywordflow">return</font> <font class="keyword">true</font>;00084 }00085 <a name="l00086"></a><a class="code" href="classserver.html#b3">00086</a> <font class="keywordtype">bool</font> <a class="code" href="classserver.html#b3">server :: listenTCP</a> ()00087 {00088   <font class="keywordtype">char</font> buff[2048];00089   buff[1] = <font class="charliteral">'\0'</font>;00090   <font class="keywordtype">int</font> length = recvfrom (<a class="code" href="classserver.html#o1">sock</a>, buff, <font class="keyword">sizeof</font> (buff), 0, (<font class="keyword">struct</font> sockaddr *) &amp;<a class="code" href="classserver.html#o2">addr</a>, &amp;<a class="code" href="classserver.html#o3">addr_len</a>);00091   <font class="keywordflow">if</font> (length &lt; 0)00092     {00093       cerr &lt;&lt; <a class="code" href="const_8h.html#a0">_NET_ERR_</a> &lt;&lt; <font class="stringliteral">"listen failed: "</font> &lt;&lt; <a class="code" href="server_8cc.html#a1">sys_errlist</a> [<a class="code" href="server_8cc.html#a0">errno</a>] &lt;&lt; <font class="stringliteral">"\n"</font>;00094       <font class="keywordflow">return</font> <font class="keyword">false</font>;00095     }00096   buff[length] = <font class="charliteral">'\0'</font>;00097   <font class="keywordflow">if</font> (<a class="code" href="classserver.html#o0">recived</a> != NULL)00098     <font class="keyword">delete</font> <a class="code" href="classserver.html#o0">recived</a>;00099   <a class="code" href="classserver.html#o0">recived</a> = NULL;00100   <a class="code" href="classserver.html#o0">recived</a> = <font class="keyword">new</font> <font class="keywordtype">char</font> [length+1];00101   assert (<a class="code" href="classserver.html#o0">recived</a> != NULL);00102   strcpy (<a class="code" href="classserver.html#o0">recived</a>, buff);00103   <font class="keywordflow">return</font> <font class="keyword">true</font>;00104 }00105 <a name="l00106"></a><a class="code" href="classserver.html#b0">00106</a> <font class="keywordtype">char</font>* <a class="code" href="classserver.html#b0">server :: get_recived</a> ()00107 {00108   <font class="keywordflow">return</font> <a class="code" href="classserver.html#o0">recived</a>;00109 }00110 </pre></div><hr><address><small>&copy; 2002 &nbsp; Marcin Caban 'Cabko' and Borys Wisniewski 'Boria'</small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -