📄 server_8cc-source.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 <iostream.h></font>00035 <font class="preprocessor">#include <string.h></font>00036 <font class="preprocessor">#include <stdlib.h></font>00037 <font class="preprocessor">#include <assert.h></font>00038 <font class="preprocessor">#include <unistd.h></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 *) &<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 *) &<a class="code" href="classserver.html#o2">addr</a>, &<a class="code" href="classserver.html#o3">addr_len</a>);00071 <font class="keywordflow">if</font> (length < 0)00072 {00073 cerr << <a class="code" href="const_8h.html#a0">_NET_ERR_</a> << <font class="stringliteral">"listen failed: "</font> << <a class="code" href="server_8cc.html#a1">sys_errlist</a> [<a class="code" href="server_8cc.html#a0">errno</a>] << <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 *) &<a class="code" href="classserver.html#o2">addr</a>, &<a class="code" href="classserver.html#o3">addr_len</a>);00091 <font class="keywordflow">if</font> (length < 0)00092 {00093 cerr << <a class="code" href="const_8h.html#a0">_NET_ERR_</a> << <font class="stringliteral">"listen failed: "</font> << <a class="code" href="server_8cc.html#a1">sys_errlist</a> [<a class="code" href="server_8cc.html#a0">errno</a>] << <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>© 2002 Marcin Caban 'Cabko' and Borys Wisniewski 'Boria'</small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -