00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034 #ifndef _PTCPSOCKET
00035 #define _PTCPSOCKET
00036
00037 #ifdef P_USE_PRAGMA
00038 #pragma interface
00039 #endif
00040
00041
00044 class PTCPSocket : public PIPSocket
00045 {
00046 PCLASSINFO(PTCPSocket, PIPSocket);
00047 public:
00057 PTCPSocket(
00058 WORD port = 0
00059 );
00060 PTCPSocket(
00061 const PString & service
00062 );
00063 PTCPSocket(
00064 const PString & address,
00065 WORD port
00066 );
00067 PTCPSocket(
00068 const PString & address,
00069 const PString & service
00070 );
00071 PTCPSocket(
00072 PSocket & socket
00073 );
00074 PTCPSocket(
00075 PTCPSocket & tcpSocket
00076 );
00078
00093 virtual PObject * Clone() const;
00095
00112 virtual PBoolean Write(
00113 const void * buf,
00114 PINDEX len
00115 );
00117
00133 virtual PBoolean Listen(
00134 unsigned queueSize = 5,
00135 WORD port = 0,
00136 Reusability reuse = AddressIsExclusive
00137 );
00138 virtual PBoolean Listen(
00139 const Address & bind,
00140 unsigned queueSize = 5,
00141 WORD port = 0,
00142 Reusability reuse = AddressIsExclusive
00143 );
00144
00159 virtual PBoolean Accept(
00160 PSocket & socket
00161 );
00163
00177 virtual PBoolean WriteOutOfBand(
00178 const void * buf,
00179 PINDEX len
00180 );
00181
00188 virtual void OnOutOfBand(
00189 const void * buf,
00190 PINDEX len
00191 );
00193
00194
00195 protected:
00196
00197 virtual PBoolean OpenSocket();
00198
00199
00200 virtual PBoolean OpenSocket(
00201 int ipAdressFamily
00202 );
00203
00204 virtual const char * GetProtocolName() const;
00205
00206
00207
00208 #ifdef _WIN32
00209 #include "msos/ptlib/tcpsock.h"
00210 #else
00211 #include "unix/ptlib/tcpsock.h"
00212 #endif
00213 };
00214
00215 #endif
00216
00217