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

📄 pinet.h.html

📁 PTypes是一个扩充了多线程和网络功能的STL库
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    ipaddress ip;         <font CLASS=comment>// target IP</font>    string    host;       <font CLASS=comment>// target host name; either IP or hostname must be specified</font>    <font CLASS=keytype>int</font>       port;       <font CLASS=comment>// target port number</font>    <font CLASS=keytype>void</font>      notfound(); <font CLASS=comment>// throws a (estream*) exception</font>    <font CLASS=keyword>friend</font> <font CLASS=keytype>bool</font> psockname(<font CLASS=keytype>int</font>, ippeerinfo&amp;);<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ippeerinfo();    ippeerinfo(ipaddress iip, <font CLASS=keyword>const</font> string&amp; ihost, <font CLASS=keytype>int</font> iport);    ipaddress get_ip();     <font CLASS=comment>// resolves the host name if necessary (only once)</font>    string    get_host();   <font CLASS=comment>// performs reverse-lookup if necessary (only once)</font>    <font CLASS=keytype>int</font>       get_port()    { <font CLASS=keyword>return</font> port; }    <font CLASS=keytype>void</font>      clear();    string    asstring(<font CLASS=keytype>bool</font> showport) <font CLASS=keyword>const</font>;};string    iptostring(ipaddress ip);ipaddress phostbyname(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* name);string    phostbyaddr(ipaddress ip);string    phostcname(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* name);<font CLASS=comment>// internal utilities</font><font CLASS=keytype>int</font> usockerrno();<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* usockerrmsg(<font CLASS=keytype>int</font> code);<font CLASS=keytype>bool</font> psockwait(<font CLASS=keytype>int</font> handle, <font CLASS=keytype>int</font> timeout);<font CLASS=keytype>bool</font> psockname(<font CLASS=keytype>int</font> handle, ippeerinfo&amp;);<font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// ---  TCP socket classes -------------------------------------------- //</font><font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// additional IO status codes</font><font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_RESOLVING  <font CLASS=symbols>=</font> <font CLASS=integer>10</font>;<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_RESOLVED   <font CLASS=symbols>=</font> <font CLASS=integer>11</font>;<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_CONNECTING <font CLASS=symbols>=</font> <font CLASS=integer>20</font>;<font CLASS=keyword>const</font> <font CLASS=keytype>int</font> IO_CONNECTED  <font CLASS=symbols>=</font> <font CLASS=integer>21</font>;<font CLASS=comment>//</font><font CLASS=comment>// ipstream</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> ipstream: public fdxstm, <font CLASS=keyword>public</font> ippeerinfo{    <font CLASS=keyword>friend</font> <font CLASS=keyword>class</font> ipstmserver;<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keytype>int</font> svsocket;   <font CLASS=comment>// server socket descriptor, used internally by ipstmserver</font><font CLASS=preproc>#ifdef</font> WIN32     // A citation from MSDN: <font CLASS=dblquot>"While nothing in the Windows Sockets prevents an     // implementation from using regular file handles to identify sockets, nothing requires     // it either"</font>. Nothing requires us to spend less time writing programs?    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawread(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> dorawwrite(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);<font CLASS=preproc>#endif</font>     <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font>  uerrno();    <font CLASS=keyword>virtual</font> <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* uerrmsg(<font CLASS=keytype>int</font> code);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doopen();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font>  doseek(<font CLASS=keytype>int</font> newpos, ioseekmode mode);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> doclose();    <font CLASS=keytype>void</font> closehandle();<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ipstream();    ipstream(ipaddress ip, <font CLASS=keytype>int</font> port);    ipstream(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* host, <font CLASS=keytype>int</font> port);    ipstream(<font CLASS=keyword>const</font> string&amp; host, <font CLASS=keytype>int</font> port);    <font CLASS=keyword>virtual</font> ~ipstream();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>int</font> classid();    <font CLASS=keyword>virtual</font> string get_streamname();    <font CLASS=keytype>bool</font>      waitfor(<font CLASS=keytype>int</font> timeout);    ipaddress get_myip();    <font CLASS=keytype>int</font>       get_myport();    <font CLASS=keytype>void</font>      set_ip(ipaddress);    <font CLASS=keytype>void</font>      set_host(<font CLASS=keyword>const</font> string&amp;);    <font CLASS=keytype>void</font>      set_host(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*);    <font CLASS=keytype>void</font>      set_port(<font CLASS=keytype>int</font>);};<font CLASS=comment>//</font><font CLASS=comment>// common internal interfaces for ipstmserver and ipmsgserver</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> ipbindinfo: <font CLASS=keyword>public</font> unknown, <font CLASS=keyword>public</font> ippeerinfo{<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    <font CLASS=keytype>int</font> handle;    ipbindinfo(ipaddress iip, <font CLASS=keyword>const</font> string&amp; ihost, <font CLASS=keytype>int</font> iport);    <font CLASS=keyword>virtual</font> ~ipbindinfo();};<font CLASS=keyword>class</font> ipsvbase: public unknown{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keytype>int</font>     socktype;    <font CLASS=keytype>bool</font>    active;    tobjlist&lt;ipbindinfo&gt; addrlist;       <font CLASS=comment>// list of local socket addresses to bind to</font>    <font CLASS=keytype>void</font> error(ippeerinfo&amp; peer, <font CLASS=keytype>int</font> code, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* defmsg);    <font CLASS=keytype>bool</font> dopoll(<font CLASS=keytype>int</font>* i, <font CLASS=keytype>int</font> timeout);    <font CLASS=keytype>void</font> setupfds(<font CLASS=keytype>void</font>* set, <font CLASS=keytype>int</font> i);    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> open();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> close();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*) <font CLASS=symbols>=</font> <font CLASS=integer>0</font>;<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ipsvbase(<font CLASS=keytype>int</font> isocktype);    <font CLASS=keyword>virtual</font> ~ipsvbase();    <font CLASS=keytype>int</font> bind(ipaddress ip, <font CLASS=keytype>int</font> port);    <font CLASS=keytype>int</font> bindall(<font CLASS=keytype>int</font> port);    <font CLASS=keytype>int</font> get_addrcount()                  { <font CLASS=keyword>return</font> addrlist.get_count(); }    <font CLASS=keyword>const</font> ipbindinfo&amp; get_addr(<font CLASS=keytype>int</font> i)    { <font CLASS=keyword>return</font> *addrlist[i]; }    <font CLASS=keytype>void</font> clear();};<font CLASS=comment>//</font><font CLASS=comment>// ipstmserver</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> ipstmserver: public ipsvbase{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*);<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ipstmserver();    <font CLASS=keyword>virtual</font> ~ipstmserver();    <font CLASS=keytype>bool</font> poll(<font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = <font CLASS=integer>0</font>);    <font CLASS=keytype>bool</font> serve(ipstream&amp; client, <font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = -<font CLASS=integer>1</font>);};<font CLASS=preproc>#ifdef</font> PTYPES18_COMPAT     <font CLASS=keyword>typedef</font> ipstream ipsocket;      <font CLASS=comment>// pre-1.7 compatibility aliases</font>    <font CLASS=keyword>typedef</font> ipstmserver ipserver;<font CLASS=preproc>#endif</font> <font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>// ---  UDP socket classes -------------------------------------------- //</font><font CLASS=comment>// -------------------------------------------------------------------- //</font><font CLASS=comment>//</font><font CLASS=comment>// ipmessage</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> ipmessage: public unknown, <font CLASS=keyword>public</font> ippeerinfo{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keytype>int</font> handle;    <font CLASS=keytype>void</font> error(<font CLASS=keytype>int</font> code, <font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* msg);    <font CLASS=keytype>void</font> open();    <font CLASS=keytype>void</font> close();<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ipmessage();    ipmessage(ipaddress ip, <font CLASS=keytype>int</font> port);    ipmessage(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* host, <font CLASS=keytype>int</font> port);    ipmessage(<font CLASS=keyword>const</font> string&amp; host, <font CLASS=keytype>int</font> port);    <font CLASS=keyword>virtual</font> ~ipmessage();    <font CLASS=keytype>void</font> set_ip(ipaddress iip);    <font CLASS=keytype>void</font> set_host(<font CLASS=keyword>const</font> string&amp;);    <font CLASS=keytype>void</font> set_host(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>*);    <font CLASS=keytype>void</font> set_port(<font CLASS=keytype>int</font>);    ipaddress get_myip();    <font CLASS=keytype>int</font> get_myport();    <font CLASS=keytype>int</font> get_handle()                            { <font CLASS=keyword>return</font> handle; }    <font CLASS=keytype>bool</font>   waitfor(<font CLASS=keytype>int</font> timeout);    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count, ipaddress&amp; src);    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);    string receive(<font CLASS=keytype>int</font> max, ipaddress&amp; src);    string receive(<font CLASS=keytype>int</font> max);    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> string&amp; s)                { send(s, length(s)); }};<font CLASS=comment>//</font><font CLASS=comment>// ipmsgserver</font><font CLASS=comment>//</font><font CLASS=keyword>class</font> ipmsgserver: public ipsvbase, <font CLASS=keyword>public</font> ippeerinfo{<font CLASS=preproc><font CLASS=keyword>protected</font>:</font>    <font CLASS=keytype>int</font> handle;    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> close();    <font CLASS=keyword>virtual</font> <font CLASS=keytype>void</font> dobind(ipbindinfo*);<font CLASS=preproc><font CLASS=keyword>public</font>:</font>    ipmsgserver();    <font CLASS=keyword>virtual</font> ~ipmsgserver();    <font CLASS=keytype>int</font> get_handle()                            { <font CLASS=keyword>return</font> handle; }    <font CLASS=keytype>bool</font>   poll(<font CLASS=keytype>int</font> i <font CLASS=symbols>=</font> <font CLASS=symbols>-</font><font CLASS=integer>1</font>, <font CLASS=keytype>int</font> timeout = <font CLASS=integer>0</font>);    <font CLASS=keytype>int</font>    receive(<font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);    string receive(<font CLASS=keytype>int</font> max);    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count);    <font CLASS=keytype>void</font>   send(<font CLASS=keyword>const</font> string&amp; s)                { send(s, length(s)); }    <font CLASS=keytype>void</font>   sendto(<font CLASS=keyword>const</font> <font CLASS=keytype>char</font>* buf, <font CLASS=keytype>int</font> count, ipaddress ip, <font CLASS=keytype>int</font> port);    <font CLASS=keytype>void</font>   sendto(<font CLASS=keyword>const</font> string&amp; s, ipaddress ip, <font CLASS=keytype>int</font> port)                                                { sendto(s, length(s), ip, port); }};<font CLASS=preproc>#ifdef</font> _MSC_VER <font CLASS=preproc>#pragma</font> pack(pop) <font CLASS=preproc>#endif</font> PTYPES_END<font CLASS=preproc>#endif</font> <font CLASS=comment>// __PINET_H__ </font></pre></div><hr noshade></body></html>

⌨️ 快捷键说明

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