📄 socket_8h-source.html
字号:
00162 <span class="comment"> * Revision 1.8 1995/03/12 04:45:40 robertj</span>00163 <span class="comment"> * Added more functionality.</span>00164 <span class="comment"> *</span>00165 <span class="comment"> * Revision 1.7 1995/01/03 09:36:19 robertj</span>00166 <span class="comment"> * Documentation.</span>00167 <span class="comment"> *</span>00168 <span class="comment"> * Revision 1.6 1995/01/02 12:16:17 robertj</span>00169 <span class="comment"> * Moved constructor to platform dependent code.</span>00170 <span class="comment"> *</span>00171 <span class="comment"> * Revision 1.5 1994/08/23 11:32:52 robertj</span>00172 <span class="comment"> * Oops</span>00173 <span class="comment"> *</span>00174 <span class="comment"> * Revision 1.4 1994/08/22 00:46:48 robertj</span>00175 <span class="comment"> * Added pragma fro GNU C++ compiler.</span>00176 <span class="comment"> *</span>00177 <span class="comment"> * Revision 1.3 1994/08/21 23:43:02 robertj</span>00178 <span class="comment"> * Changed type of socket port number for better portability.</span>00179 <span class="comment"> *</span>00180 <span class="comment"> * Revision 1.2 1994/07/25 03:36:03 robertj</span>00181 <span class="comment"> * Added sockets to common, normalising to same comment standard.</span>00182 <span class="comment"> *</span>00183 <span class="comment"> */</span>00184 00185 <span class="preprocessor">#ifndef _PSOCKETS</span>00186 <span class="preprocessor"></span><span class="preprocessor">#define _PSOCKETS</span>00187 <span class="preprocessor"></span>00188 <span class="preprocessor">#ifdef P_USE_PRAGMA</span>00189 <span class="preprocessor"></span><span class="preprocessor">#pragma interface</span>00190 <span class="preprocessor"></span><span class="preprocessor">#endif</span>00191 <span class="preprocessor"></span>00192 <span class="preprocessor">#include <<a class="code" href="channel_8h.html">ptlib/channel.h</a>></span>00193 00194 <span class="preprocessor">#ifdef __NUCLEUS_PLUS__</span>00195 <span class="preprocessor"></span><span class="preprocessor">#include <sys/socket.h></span>00196 <span class="preprocessor">#endif</span>00197 <span class="preprocessor"></span>00198 <span class="keyword">class </span><a class="code" href="classPSocket.html">PSocket</a>;00199 00200 <a class="code" href="lists_8h.html#a0">PLIST</a>(PSocketList, <a class="code" href="classPSocket.html">PSocket</a>);00201 00202 <a name="l00209"></a><a class="code" href="classPSocket.html">00209</a> <span class="keyword">class </span><a class="code" href="classPSocket.html">PSocket</a> : <span class="keyword">public</span> <a class="code" href="classPChannel.html">PChannel</a>00210 {00211 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPSocket.html">PSocket</a>, <a class="code" href="classPChannel.html">PChannel</a>);00212 00213 <span class="keyword">protected</span>:00214 <a class="code" href="classPSocket.html#b0">PSocket</a>();00215 00216 <span class="keyword">public</span>:00229 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#z369_1">Connect</a>(00230 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & address 00231 );00232 00233 <a name="l00235"></a><a class="code" href="classPSocket.html#z369_0">00235</a> <span class="keyword">enum</span> <a class="code" href="classPSocket.html#z369_0">Reusability</a> {00236 <a class="code" href="classPSocket.html#z369_0s0">CanReuseAddress</a>,00237 <a class="code" href="classPSocket.html#z369_0s1">AddressIsExclusive</a>00238 };00239 00253 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#z369_2">Listen</a>(00254 <span class="keywordtype">unsigned</span> queueSize = 5, 00255 WORD <a class="code" href="classPSocket.html#n0">port</a> = 0, 00256 <a class="code" href="classPSocket.html#z369_0">Reusability</a> reuse = <a class="code" href="classPSocket.html#z369_0s1">AddressIsExclusive</a> 00257 );00258 00259 00281 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#z369_3">Accept</a>(00282 <a class="code" href="classPSocket.html">PSocket</a> & socket 00283 );00284 00290 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#z369_4">Shutdown</a>(00291 <a class="code" href="classPChannel.html#z53_0">ShutdownValue</a> option 00292 );00294 00303 BOOL <a class="code" href="classPSocket.html#z371_0">SetOption</a>(00304 <span class="keywordtype">int</span> option, 00305 <span class="keywordtype">int</span> value, 00306 <span class="keywordtype">int</span> level = SOL_SOCKET 00307 );00308 00315 BOOL <a class="code" href="classPSocket.html#z371_0">SetOption</a>(00316 <span class="keywordtype">int</span> option, 00317 <span class="keyword">const</span> <span class="keywordtype">void</span> * valuePtr, 00318 PINDEX valueSize, 00319 <span class="keywordtype">int</span> level = SOL_SOCKET 00320 );00321 00328 BOOL <a class="code" href="classPSocket.html#z371_2">GetOption</a>(00329 <span class="keywordtype">int</span> option, 00330 <span class="keywordtype">int</span> & value, 00331 <span class="keywordtype">int</span> level = SOL_SOCKET 00332 );00333 00340 BOOL <a class="code" href="classPSocket.html#z371_2">GetOption</a>(00341 <span class="keywordtype">int</span> option, 00342 <span class="keywordtype">void</span> * valuePtr, 00343 PINDEX valueSize, 00344 <span class="keywordtype">int</span> level = SOL_SOCKET 00345 );00347 00355 <span class="keyword">static</span> WORD <a class="code" href="classPSocket.html#z373_6">GetProtocolByName</a>(00356 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & name 00357 );00358 00364 <span class="keyword">static</span> <a class="code" href="classPString.html">PString</a> <a class="code" href="classPSocket.html#z373_7">GetNameByProtocol</a>(00365 WORD proto 00366 );00367 00368 00370 <span class="keyword">virtual</span> WORD <a class="code" href="classPSocket.html#z373_0">GetPortByService</a>(00371 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & service 00372 ) <span class="keyword">const</span>;00390 <span class="keyword">static</span> WORD <a class="code" href="classPSocket.html#z373_0">GetPortByService</a>(00391 <span class="keyword">const</span> <span class="keywordtype">char</span> * protocol, 00392 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & service 00393 );00394 00396 <span class="keyword">virtual</span> <a class="code" href="classPString.html">PString</a> <a class="code" href="classPSocket.html#z373_1">GetServiceByPort</a>(00397 WORD <a class="code" href="classPSocket.html#n0">port</a> 00398 ) <span class="keyword">const</span>;00416 <span class="keyword">static</span> <a class="code" href="classPString.html">PString</a> <a class="code" href="classPSocket.html#z373_1">GetServiceByPort</a>(00417 <span class="keyword">const</span> <span class="keywordtype">char</span> * protocol, 00418 WORD <a class="code" href="classPSocket.html#n0">port</a> 00419 );00420 00421 00423 <span class="keywordtype">void</span> <a class="code" href="classPSocket.html#z373_2">SetPort</a>(00424 WORD <a class="code" href="classPSocket.html#n0">port</a> 00425 );00438 <span class="keywordtype">void</span> <a class="code" href="classPSocket.html#z373_2">SetPort</a>(00439 <span class="keyword">const</span> <a class="code" href="classPString.html">PString</a> & service 00440 );00441 00447 WORD <a class="code" href="classPSocket.html#z373_4">GetPort</a>() <span class="keyword">const</span>;00448 00456 <a class="code" href="classPString.html">PString</a> <a class="code" href="classPSocket.html#z373_5">GetService</a>() <span class="keyword">const</span>;00458 00461 <a name="l00462"></a><a class="code" href="classPSocket_1_1SelectList.html">00462</a> <span class="keyword">class </span><a class="code" href="classPSocket_1_1SelectList.html">SelectList</a> : <span class="keyword">public</span> PSocketList00463 {00464 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(<a class="code" href="classPSocket_1_1SelectList.html">SelectList</a>, PSocketList)00465 <span class="keyword">public</span>:<a name="l00466"></a><a class="code" href="classPSocket_1_1SelectList.html#a0">00466</a> <a class="code" href="classPSocket_1_1SelectList.html#a0">SelectList</a>()00467 { DisallowDeleteObjects(); }<a name="l00469"></a><a class="code" href="classPSocket_1_1SelectList.html#a1">00469</a> <span class="keywordtype">void</span> <a class="code" href="classPSocket_1_1SelectList.html#a1">operator+=</a>(<a class="code" href="classPSocket.html">PSocket</a> & sock )00470 { Append(&sock); }<a name="l00472"></a><a class="code" href="classPSocket_1_1SelectList.html#a2">00472</a> <span class="keywordtype">void</span> <a class="code" href="classPSocket_1_1SelectList.html#a2">operator-=</a>(<a class="code" href="classPSocket.html">PSocket</a> & sock )00473 { Remove(&sock); }00474 };00475 00477 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classPSocket.html#z375_0">Select</a>(00478 <a class="code" href="classPSocket.html">PSocket</a> & sock1, 00479 <a class="code" href="classPSocket.html">PSocket</a> & sock2 00480 );00482 <span class="keyword">static</span> <span class="keywordtype">int</span> <a class="code" href="classPSocket.html#z375_0">Select</a>(00483 <a class="code" href="classPSocket.html">PSocket</a> & sock1, 00484 <a class="code" href="classPSocket.html">PSocket</a> & sock2, 00485 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & timeout 00486 );00488 <span class="keyword">static</span> <a class="code" href="classPChannel.html#z55_0">Errors</a> <a class="code" href="classPSocket.html#z375_0">Select</a>(00489 SelectList & read 00490 );00492 <span class="keyword">static</span> <a class="code" href="classPChannel.html#z55_0">Errors</a> <a class="code" href="classPSocket.html#z375_0">Select</a>(00493 SelectList & read, 00494 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & timeout 00495 );00497 <span class="keyword">static</span> <a class="code" href="classPChannel.html#z55_0">Errors</a> <a class="code" href="classPSocket.html#z375_0">Select</a>(00498 SelectList & read, 00499 SelectList & write
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -