w32sock_8h-source.html

来自「一个功能强大的内存数据库源代码,c++编写,有详细的注释」· HTML 代码 · 共 145 行

HTML
145
字号
<!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>w32sock.h Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.2.15 --><center><a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center><hr><h1>w32sock.h</h1><div class="fragment"><pre>00001 <font class="comment">//-&lt; W32SOCK.H &gt;-----------------------------------------------------*--------*</font>00002 <font class="comment">// FastDB                    Version 1.0         (c) 1997  GARRET    *     ?  *</font>00003 <font class="comment">// (Main Memory Database Management System)                          *   /\|  *</font>00004 <font class="comment">//                                                                   *  /  \  *</font>00005 <font class="comment">//                          Created:      8-May-97    K.A. Knizhnik  * / [] \ *</font>00006 <font class="comment">//                          Last update:  8-May-97    K.A. Knizhnik  * GARRET *</font>00007 <font class="comment">//-------------------------------------------------------------------*--------*</font>00008 <font class="comment">// Windows sockets  </font>00009 <font class="comment">//-------------------------------------------------------------------*--------*</font>00010 00011 <font class="preprocessor">#ifndef __W32SOCK_H__</font>00012 <font class="preprocessor"></font><font class="preprocessor">#define __W32SOCK_H__</font>00013 <font class="preprocessor"></font>00014 <font class="preprocessor">#include "sockio.h"</font>00015 00016 <font class="keyword">class </font>win_socket : <font class="keyword">public</font> socket_t { 00017   <font class="keyword">protected</font>: 00018     SOCKET        s; 00019     <font class="keywordtype">int</font>           errcode;  <font class="comment">// error code of last failed operation </font>00020     <font class="keywordtype">char</font>*         address;  <font class="comment">// host address</font>00021 00022     <font class="keyword">enum</font> error_codes { 00023         ok = 0,00024         not_opened = -1,00025         bad_address = -2,00026         connection_failed = -3,00027         broken_pipe = -4, 00028         invalid_access_mode = -500029     };00030 00031   <font class="keyword">public</font>: 00032     <font class="keywordtype">bool</font>      open(<font class="keywordtype">int</font> listen_queue_size);00033     <font class="keywordtype">bool</font>      connect(<font class="keywordtype">int</font> max_attempts, time_t timeout);00034 00035     <font class="keywordtype">int</font>       read(<font class="keywordtype">void</font>* buf, size_t min_size, size_t max_size,time_t timeout);00036     <font class="keywordtype">bool</font>      write(<font class="keywordtype">void</font> <font class="keyword">const</font>* buf, size_t size);00037 00038     <font class="keywordtype">bool</font>      is_ok(); 00039     <font class="keywordtype">bool</font>      close(); 00040     <font class="keywordtype">char</font>*     get_peer_name();00041     <font class="keywordtype">bool</font>      shutdown();00042     <font class="keywordtype">void</font>      get_error_text(<font class="keywordtype">char</font>* buf, size_t buf_size);00043 00044     socket_t* accept();00045     <font class="keywordtype">bool</font>      cancel_accept();00046 00047     <font class="keywordtype">int</font> get_handle();00048 00049     win_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>* address); 00050     win_socket(SOCKET new_sock);00051 00052     ~win_socket();00053 };00054 00055 <font class="preprocessor">#define SOCKET_BUF_SIZE (8*1024) </font>00056 <font class="preprocessor"></font><font class="preprocessor">#define ACCEPT_TIMEOUT  (30*1000)</font>00057 <font class="preprocessor"></font>00058 <font class="keyword">class </font>local_win_socket : <font class="keyword">public</font> socket_t { 00059   <font class="keyword">protected</font>: 00060     <font class="keyword">enum</font> error_codes { 00061         ok = 0,00062         not_opened = -1,00063         broken_pipe = -2,00064         timeout_expired = -300065     };00066     <font class="keyword">enum</font> socket_signals {00067         RD,  <font class="comment">// receive data</font>00068         RTR, <font class="comment">// ready to receive</font>00069         TD,  <font class="comment">// transfer data</font>00070         RTT  <font class="comment">// ready to transfer</font>00071     };00072     <font class="comment">//------------------------------------------------------</font>00073     <font class="comment">// Mapping between signals at opposite ends of socket:</font>00074     <font class="comment">// TD  ---&gt; RD</font>00075     <font class="comment">// RTR ---&gt; RTT</font>00076     <font class="comment">//------------------------------------------------------</font>00077 00078     <font class="keyword">struct </font>socket_buf { 00079         <font class="keyword">volatile</font> <font class="keywordtype">int</font> RcvWaitFlag;00080         <font class="keyword">volatile</font> <font class="keywordtype">int</font> SndWaitFlag;00081         <font class="keyword">volatile</font> <font class="keywordtype">int</font> DataEnd;00082         <font class="keyword">volatile</font> <font class="keywordtype">int</font> DataBeg;00083         <font class="keywordtype">char</font> Data[SOCKET_BUF_SIZE - 4*<font class="keyword">sizeof</font>(int)];  00084     };00085     <font class="keyword">struct </font>accept_data { 00086         HANDLE Signal[4];00087         HANDLE BufHnd;00088     };00089     <font class="keyword">struct </font>connect_data { 00090         HANDLE Mutex;00091         <font class="keywordtype">int</font>    Pid;00092     };00093     socket_buf* RcvBuf;00094     socket_buf* SndBuf;00095     HANDLE      Signal[4];         00096     HANDLE      Mutex;00097     HANDLE      BufHnd;00098     <font class="keywordtype">int</font>         Error;00099     <font class="keywordtype">char</font>*       Name;00100 00101   <font class="keyword">public</font>: 00102     <font class="keywordtype">bool</font>      open(<font class="keywordtype">int</font> listen_queue_size);00103     <font class="keywordtype">bool</font>      connect(<font class="keywordtype">int</font> max_attempts, time_t timeout);00104 00105     <font class="keywordtype">int</font>       read(<font class="keywordtype">void</font>* buf, size_t min_size, size_t max_size,time_t timeout);00106     <font class="keywordtype">bool</font>      write(<font class="keywordtype">void</font> <font class="keyword">const</font>* buf, size_t size);00107 00108     <font class="keywordtype">char</font>*     get_peer_name();00109     <font class="keywordtype">bool</font>      is_ok(); 00110     <font class="keywordtype">bool</font>      close();00111     <font class="keywordtype">bool</font>      shutdown();00112     <font class="keywordtype">void</font>      get_error_text(<font class="keywordtype">char</font>* buf, size_t buf_size);00113 00114     socket_t* accept();00115     <font class="keywordtype">bool</font>      cancel_accept();00116     00117     <font class="keywordtype">int</font>       get_handle();00118 00119     local_win_socket(<font class="keyword">const</font> <font class="keywordtype">char</font>* address); 00120     local_win_socket(); 00121 00122     ~local_win_socket();00123 };00124            00125 <font class="preprocessor">#endif</font>00126 <font class="preprocessor"></font>00127 00128 00129 00130 </pre></div><hr><address align="right"><small>Generated on Fri Nov 15 21:06:29 2002 for FastDB by<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.15 </small></address></body></html>

⌨️ 快捷键说明

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