📄 socket_8h-source.html
字号:
00500 );00502 <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>(00503 SelectList & read, 00504 SelectList & write, 00505 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & timeout 00506 );00508 <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>(00509 SelectList & read, 00510 SelectList & write, 00511 SelectList & except 00512 );00534 <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>(00535 SelectList & read, 00536 SelectList & write, 00537 SelectList & except, 00538 <span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & timeout 00539 );00541 00544 <a name="l00545"></a><a class="code" href="classPSocket.html#z377_0">00545</a> <span class="keyword">inline</span> <span class="keyword">static</span> WORD <a class="code" href="classPSocket.html#z377_0">Host2Net</a>(WORD v) { <span class="keywordflow">return</span> htons(v); }<a name="l00547"></a><a class="code" href="classPSocket.html#z377_1">00547</a> <span class="keyword">inline</span> <span class="keyword">static</span> DWORD <a class="code" href="classPSocket.html#z377_0">Host2Net</a>(DWORD v) { <span class="keywordflow">return</span> htonl(v); }00548 <a name="l00550"></a><a class="code" href="classPSocket.html#z377_2">00550</a> <span class="keyword">inline</span> <span class="keyword">static</span> WORD <a class="code" href="classPSocket.html#z377_2">Net2Host</a>(WORD v) { <span class="keywordflow">return</span> ntohs(v); }<a name="l00552"></a><a class="code" href="classPSocket.html#z377_3">00552</a> <span class="keyword">inline</span> <span class="keyword">static</span> DWORD <a class="code" href="classPSocket.html#z377_2">Net2Host</a>(DWORD v) { <span class="keywordflow">return</span> ntohl(v); }00554 00555 <span class="keyword">protected</span>:00556 <span class="comment">/*This function calls os_socket() with the correct parameters for the</span>00557 <span class="comment"> socket protocol type.</span>00558 <span class="comment"> */</span>00559 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#b1">OpenSocket</a>() = 0;00560 00563 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classPSocket.html#b2">GetProtocolName</a>() <span class="keyword">const</span> = 0;00564 00565 00566 <span class="keywordtype">int</span> <a class="code" href="classPSocket.html#b3">os_close</a>();00567 <span class="keywordtype">int</span> <a class="code" href="classPSocket.html#b4">os_socket</a>(<span class="keywordtype">int</span> af, <span class="keywordtype">int</span> type, <span class="keywordtype">int</span> proto);00568 BOOL <a class="code" href="classPSocket.html#b5">os_connect</a>(00569 <span class="keyword">struct</span> sockaddr * sin,00570 PINDEX size00571 );00572 BOOL <a class="code" href="classPSocket.html#b6">os_recvfrom</a>(00573 <span class="keywordtype">void</span> * buf,00574 PINDEX len,00575 <span class="keywordtype">int</span> flags,00576 <span class="keyword">struct</span> sockaddr * from,00577 PINDEX * fromlen00578 );00579 BOOL <a class="code" href="classPSocket.html#b7">os_sendto</a>(00580 <span class="keyword">const</span> <span class="keywordtype">void</span> * buf,00581 PINDEX len,00582 <span class="keywordtype">int</span> flags,00583 <span class="keyword">struct</span> sockaddr * to,00584 PINDEX tolen00585 );00586 BOOL <a class="code" href="classPSocket.html#b8">os_accept</a>(00587 <a class="code" href="classPSocket.html">PSocket</a> & listener,00588 <span class="keyword">struct</span> sockaddr * addr,00589 PINDEX * size00590 );00591 00592 00593 <span class="comment">// Member variables</span><a name="l00595"></a><a class="code" href="classPSocket.html#n0">00595</a> <span class="comment"> WORD port;</span>00596 00597 <span class="preprocessor">#if P_HAS_RECVMSG</span>00598 <span class="preprocessor"></span> BOOL catchReceiveToAddr;00599 <span class="keyword">virtual</span> <span class="keywordtype">void</span> SetLastReceiveAddr(<span class="keywordtype">void</span> * <span class="comment">/*addr*/</span>, <span class="keywordtype">int</span> <span class="comment">/*addrLen*/</span>)00600 { }00601 <span class="preprocessor">#endif</span>00602 <span class="preprocessor"></span>00603 <span class="comment">// Include platform dependent part of class</span>00604 <span class="preprocessor">#ifdef _WIN32</span>00605 <span class="preprocessor"></span><span class="preprocessor">#include "msos/ptlib/socket.h"</span>00606 <span class="preprocessor">#else</span>00607 <span class="preprocessor"></span><span class="preprocessor">#include "unix/ptlib/socket.h"</span>00608 <span class="preprocessor">#endif</span>00609 <span class="preprocessor"></span>};00610 00611 00612 <span class="comment">// Utility classes</span>00613 00614 <span class="keyword">class </span><a class="code" href="classP__fd__set.html">P_fd_set</a> {00615 <span class="keyword">public</span>:00616 <a class="code" href="classP__fd__set.html#a0">P_fd_set</a>();00617 <a class="code" href="classP__fd__set.html#a0">P_fd_set</a>(SOCKET fd);00618 <a class="code" href="classP__fd__set.html#a2">~P_fd_set</a>()00619 {00620 free(set);00621 }00622 00623 <a class="code" href="classP__fd__set.html">P_fd_set</a> & <a class="code" href="classP__fd__set.html#a3">operator=</a>(SOCKET fd);00624 <a class="code" href="classP__fd__set.html">P_fd_set</a> & <a class="code" href="classP__fd__set.html#a4">operator+=</a>(SOCKET fd);00625 <a class="code" href="classP__fd__set.html">P_fd_set</a> & <a class="code" href="classP__fd__set.html#a5">operator-=</a>(SOCKET fd);00626 00627 <span class="keywordtype">void</span> <a class="code" href="classP__fd__set.html#a6">Zero</a>();00628 00629 BOOL <a class="code" href="classP__fd__set.html#a7">IsPresent</a>(SOCKET fd)<span class="keyword"> const</span>00630 <span class="keyword"> </span>{00631 <span class="keywordflow">return</span> FD_ISSET(fd, set);00632 }00633 00634 <a class="code" href="classP__fd__set.html#a8">operator fd_set*</a>()<span class="keyword"> const</span>00635 <span class="keyword"> </span>{00636 <span class="keywordflow">return</span> set;00637 }00638 00639 <span class="keyword">private</span>:00640 <span class="keywordtype">void</span> Construct();00641 00642 SOCKET max_fd;00643 fd_set * set;00644 };00645 00646 00647 <span class="keyword">class </span><a class="code" href="classP__timeval.html">P_timeval</a> {00648 <span class="keyword">public</span>:00649 <a class="code" href="classP__timeval.html#a0">P_timeval</a>();00650 <a class="code" href="classP__timeval.html#a0">P_timeval</a>(<span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & time)00651 {00652 <a class="code" href="classP__timeval.html#a2">operator=</a>(time);00653 }00654 00655 <a class="code" href="classP__timeval.html">P_timeval</a> & <a class="code" href="classP__timeval.html#a2">operator=</a>(<span class="keyword">const</span> <a class="code" href="classPTimeInterval.html">PTimeInterval</a> & time);00656 00657 <a class="code" href="classP__timeval.html#a3">operator timeval*</a>()00658 {00659 <span class="keywordflow">return</span> infinite ? NULL : &tval;00660 }00661 00662 timeval * <a class="code" href="classP__timeval.html#a4">operator-></a>()00663 {00664 <span class="keywordflow">return</span> &tval;00665 }00666 00667 timeval & <a class="code" href="classP__timeval.html#a5">operator*</a>()00668 {00669 <span class="keywordflow">return</span> tval;00670 }00671 00672 <span class="keyword">private</span>:00673 <span class="keyword">struct </span>timeval tval;00674 BOOL infinite;00675 };00676 00677 <span class="preprocessor">#ifdef _WIN32</span>00678 <span class="preprocessor"></span><span class="keyword">class </span>PWinSock : <span class="keyword">public</span> <a class="code" href="classPSocket.html">PSocket</a>00679 {00680 <a class="code" href="object_8h.html#a27">PCLASSINFO</a>(PWinSock, <a class="code" href="classPSocket.html">PSocket</a>)00681 <span class="comment">// Must be one and one only instance of this class, and it must be static!.</span>00682 <span class="keyword">public</span>:00683 PWinSock();00684 ~PWinSock();00685 <span class="keyword">private</span>:00686 <span class="keyword">virtual</span> BOOL <a class="code" href="classPSocket.html#b1">OpenSocket</a>();00687 <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> * <a class="code" href="classPSocket.html#b2">GetProtocolName</a>() <span class="keyword">const</span>;00688 };00689 <span class="preprocessor">#endif</span>00690 <span class="preprocessor"></span>00691 <span class="preprocessor">#endif</span>00692 <span class="preprocessor"></span>00693 <span class="comment">// End Of File ///////////////////////////////////////////////////////////////</span></pre></div><hr><address style="align: right;"><small>Generated on Wed Sep 29 22:44:12 2004 for PWLib 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.18 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -