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

📄 socket.h

📁 mgcp协议源代码。支持多种编码:g711
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * socket.h * * Berkley Socket channel ancestor class. * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: socket.h,v $ * Revision 1.34  2000/06/26 13:58:42  robertj * Nucleus port (again) * * Revision 1.33  2000/06/26 11:17:19  robertj * Nucleus++ port (incomplete). * * Revision 1.32  2000/02/18 09:55:21  robertj * Added parameter so get/setsockopt can have other levels to SOL_SOCKET. * * Revision 1.31  1999/03/09 02:59:51  robertj * Changed comments to doc++ compatible documentation. * * Revision 1.30  1999/02/16 08:11:10  robertj * MSVC 6.0 compatibility changes. * * Revision 1.29  1998/11/30 02:51:58  robertj * New directory structure * * Revision 1.28  1998/09/23 06:21:25  robertj * Added open source copyright license. * * Revision 1.27  1998/08/27 00:46:58  robertj * Resolved signedness problems with various GNU libraries. * * Revision 1.26  1998/08/25 14:07:42  robertj * Added getprotobyxxx wrapper functions. * * Revision 1.25  1998/01/26 00:35:21  robertj * Fixed documentation of PSocket::Select(). * * Revision 1.24  1996/09/14 13:09:24  robertj * Major upgrade: *   rearranged sockets to help support IPX. *   added indirect channel class and moved all protocols to descend from it, *   separating the protocol from the low level byte transport. * * Revision 1.23  1996/07/27 04:14:00  robertj * Changed Select() calls to return error codes. * * Revision 1.22  1996/05/15 10:11:38  robertj * Added timeout to accept function. * * Revision 1.21  1996/03/31 08:52:36  robertj * Added socket shutdown function. * * Revision 1.20  1996/03/18 13:33:12  robertj * Fixed incompatibilities to GNU compiler where PINDEX != int. * * Revision 1.19  1996/03/03 07:37:58  robertj * Added Reusability clause to the Listen() function on sockets. * * Revision 1.18  1996/03/02 03:10:18  robertj * Added Apability to get and set Berkeley socket options. * * Revision 1.17  1996/02/25 03:02:14  robertj * Moved some socket functions to platform dependent code. * Added array of fds to os_select for unix threading support. * * Revision 1.16  1996/02/15 14:46:43  robertj * Added Select() function to PSocket. * * Revision 1.15  1995/12/23 03:46:54  robertj * Fixed portability issue with closingh sockets. * * Revision 1.14  1995/12/10 11:35:21  robertj * Numerous fixes for sockets. * * Revision 1.13  1995/10/14 15:05:54  robertj * Added functions for changing integer from host to network byte order. * * Revision 1.12  1995/06/17 11:13:25  robertj * Documentation update. * * Revision 1.11  1995/06/17 00:44:35  robertj * More logical design of port numbers and service names. * Changed overloaded Open() calls to 3 separate function names. * * Revision 1.10  1995/06/04 12:36:37  robertj * Slight redesign of port numbers on sockets. * * Revision 1.9  1995/03/14 12:42:39  robertj * Updated documentation to use HTML codes. * * Revision 1.8  1995/03/12  04:45:40  robertj * Added more functionality. * * Revision 1.7  1995/01/03  09:36:19  robertj * Documentation. * * Revision 1.6  1995/01/02  12:16:17  robertj * Moved constructor to platform dependent code. * * Revision 1.5  1994/08/23  11:32:52  robertj * Oops * * Revision 1.4  1994/08/22  00:46:48  robertj * Added pragma fro GNU C++ compiler. * * Revision 1.3  1994/08/21  23:43:02  robertj * Changed type of socket port number for better portability. * * Revision 1.2  1994/07/25  03:36:03  robertj * Added sockets to common, normalising to same comment standard. * */#define _PSOCKET#ifdef __GNUC__#pragma interface#endif#ifndef _PCHANNEL#include <ptlib/channel.h>#endif#ifdef __NUCLEUS_PLUS__#include <sys/socket.h>#endifclass PSocket;PLIST(PSocketList, PSocket);/**A network communications channel. This is based on the concepts in the   Berkley Sockets library.      A socket represents a bidirectional communications channel to a {\it port}   at a remote {\it host}. */class PSocket : public PChannel{  PCLASSINFO(PSocket, PChannel);  protected:    PSocket();  public:  /**@name Socket establishment functions */  //@{    /**Connect a socket to a remote host on the specified port number. This is       typically used by the client or initiator of a communications channel.       This connects to a "listening" socket at the other end of the       communications channel.       @return       TRUE if the channel was successfully connected to the remote host.     */    virtual BOOL Connect(      const PString & address   /// Address of remote machine to connect to.    );    /// Flags to reuse of port numbers in Listen() function.    enum Reusability {      CanReuseAddress,      AddressIsExclusive    };    /**Listen on a socket for a remote host on the specified port number. This       may be used for server based applications. A "connecting" socket begins       a connection by initiating a connection to this socket. An active socket       of this type is then used to generate other "accepting" sockets which       establish a two way communications channel with the "connecting" socket.       If the #port# parameter is zero then the port number as       defined by the object instance construction or the descendent classes       SetPort() or SetService() function.       @return       TRUE if the channel was successfully opened.     */    virtual BOOL Listen(      unsigned queueSize = 5,  /// Number of pending accepts that may be queued.      WORD port = 0,           /// Port number to use for the connection.      Reusability reuse = AddressIsExclusive /// Can/Cant listen more than once.    );    /**Open a socket to a remote host on the specified port number. This is an       "accepting" socket. When a "listening" socket has a pending connection       to make, this will accept a connection made by the "connecting" socket       created to establish a link.       The port that the socket uses is the one used in the #Listen()#       command of the #socket# parameter. Note an error occurs if       the #socket# parameter has not had the #Listen()#       function called on it.       Note that this function will block until a remote system connects to the       port number specified in the "listening" socket. The time that the       function will block is determined by the read timeout of the       #socket# parameter. This will normally be       #PMaxTimeInterval# which indicates an infinite time.       The default behaviour is to assert.       @return       TRUE if the channel was successfully opened.     */    virtual BOOL Accept(      PSocket & socket          /// Listening socket making the connection.    );    /**Close one or both of the data streams associated with a socket        @return       TRUE if the shutdown was performed     */    virtual BOOL Shutdown(      ShutdownValue option   /// Flag for shutdown of read, write or both.    );  //@}  /**@name Socket options functions */  //@{    /**Set options on the socket. These options are defined as Berkeley socket       options of the class SOL_SOCKET.       @return       TRUE if the option was successfully set.     */    BOOL SetOption(      int option,             /// Option to set.      int value,              /// New value for option.      int level = SOL_SOCKET  /// Level for option    );    /**Set options on the socket. These options are defined as Berkeley socket       options of the class SOL_SOCKET.       @return       TRUE if the option was successfully set.     */    BOOL SetOption(      int option,             /// Option to set.      const void * valuePtr,  /// Pointer to new value for option.      PINDEX valueSize,       /// Size of new value.      int level = SOL_SOCKET  /// Level for option    );    /**Get options on the socket. These options are defined as Berkeley socket       options of the class SOL_SOCKET.       @return       TRUE if the option was successfully retreived.     */    BOOL GetOption(      int option,             /// Option to get.      int & value,            /// Integer to receive value.

⌨️ 快捷键说明

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