PTLib
Version 2.14.3
|
This is an ancestor class allowing access to a SOCKS servers (version 4 and 5). More...
#include <socks.h>
Public Member Functions | |
PSocksSocket (WORD port=0) | |
virtual PBoolean | Connect (const PString &address) |
Connect a socket to a remote host on the specified port number. More... | |
virtual PBoolean | Connect (const Address &addr) |
virtual PBoolean | Listen (unsigned queueSize=5, WORD port=0, Reusability reuse=AddressIsExclusive) |
Listen on a socket for a remote host on the specified port number. More... | |
PBoolean | Accept () |
Open a socket to a remote host on the specified port number. More... | |
virtual PBoolean | Accept (PSocket &socket) |
Open a socket to a remote host on the specified port number. More... | |
virtual PBoolean | GetLocalAddress (Address &addr) |
Get the Internet Protocol address for the local host. More... | |
virtual PBoolean | GetLocalAddress (Address &addr, WORD &port) |
virtual PBoolean | GetPeerAddress (Address &addr) |
Get the Internet Protocol address for the peer host the socket is connected to. More... | |
virtual PBoolean | GetPeerAddress (Address &addr, WORD &port) |
![]() | |
virtual PBoolean | Read (void *buf, PINDEX len) |
Low level read from the channel. More... | |
PTCPSocket (WORD port=0) | |
Create a TCP/IP protocol socket channel. More... | |
PTCPSocket (const PString &service) | |
PTCPSocket (const PString &address, WORD port) | |
PTCPSocket (const PString &address, const PString &service) | |
PTCPSocket (PSocket &socket) | |
PTCPSocket (PTCPSocket &tcpSocket) | |
virtual PObject * | Clone () const |
Create a copy of the class on the heap. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len) |
Low level write to the channel. More... | |
virtual PBoolean | WriteOutOfBand (const void *buf, PINDEX len) |
Write out of band data from the TCP/IP stream. More... | |
virtual void | OnOutOfBand (const void *buf, PINDEX len) |
This is callback function called by the system whenever out of band data from the TCP/IP stream is received. More... | |
![]() | |
virtual bool | InternalGetLocalAddress (AddressAndPort &addrAndPort) |
virtual bool | InternalGetPeerAddress (AddressAndPort &addrAndPort) |
virtual PBoolean | Connect (const Address &iface, const Address &addr) |
virtual PBoolean | Connect (const Address &iface, WORD localPort, const Address &addr) |
virtual PBoolean | Listen (const Address &bind, unsigned queueSize=5, WORD port=0, Reusability reuse=AddressIsExclusive) |
virtual bool | SetQoS (const QoS &qos) |
Set the current Quality of Service. More... | |
const QoS & | GetQoS () const |
Get the current Quality of Service. More... | |
virtual PString | GetName () const |
Get the platform and I/O channel type name of the channel. More... | |
PString | GetLocalAddress () const |
Get the Internet Protocol address and port for the local host. More... | |
bool | GetLocalAddress (Address &addr) const |
bool | GetLocalAddress (Address &addr, WORD &port) const |
bool | GetLocalAddress (AddressAndPort &addr) const |
PString | GetPeerAddress () const |
Get the Internet Protocol address for the peer host and port the socket is connected to. More... | |
bool | GetPeerAddress (Address &addr) const |
bool | GetPeerAddress (Address &addr, WORD &port) const |
bool | GetPeerAddress (AddressAndPort &addr) const |
PString | GetLocalHostName () |
Get the host name for the local host. More... | |
PString | GetPeerHostName () |
Get the host name for the peer host the socket is connected to. More... | |
PARRAY (RouteTable, RouteEntry) | |
PARRAY (InterfaceTable, InterfaceEntry) | |
P_DECLARE_ENUM (QoSType, BackgroundQoS, BestEffortQoS, ExcellentEffortQoS, CriticalQoS, VideoQoS, VoiceQoS, ControlQoS) | |
The types of QoS supported, based on IEEE P802.1p TrafficClass parameter. More... | |
![]() | |
~PSocket () | |
PBoolean | SetOption (int option, int value, int level=SOL_SOCKET) |
Set options on the socket. More... | |
PBoolean | SetOption (int option, const void *valuePtr, PINDEX valueSize, int level=SOL_SOCKET) |
Set options on the socket. More... | |
PBoolean | GetOption (int option, int &value, int level=SOL_SOCKET) |
Get options on the socket. More... | |
PBoolean | GetOption (int option, void *valuePtr, PINDEX valueSize, int level=SOL_SOCKET) |
Get options on the socket. More... | |
virtual bool | Read (Slice *slices, size_t sliceCount) |
Low level scattered read from the channel. More... | |
virtual bool | Write (const Slice *slices, size_t sliceCount) |
Low level scattered write to the channel. More... | |
virtual PBoolean | Shutdown (ShutdownValue option) |
Close one or both of the data streams associated with a socket. More... | |
virtual WORD | GetPortByService (const PString &service) const |
Get the port number for the specified service name. More... | |
virtual PString | GetServiceByPort (WORD port) const |
Get the service name from the port number. More... | |
void | SetPort (WORD port) |
Set the port number for the channel. More... | |
void | SetPort (const PString &service) |
Set the port number for the channel. More... | |
WORD | GetPort () const |
Get the port the TCP socket channel object instance is using. More... | |
PString | GetService () const |
Get a service name for the port number the TCP socket channel object instance is using. More... | |
![]() | |
PBoolean | SetErrorValues (Errors errorCode, int osError, ErrorGroup group=LastGeneralError) |
Set error values to those specified. More... | |
virtual Comparison | Compare (const PObject &obj) const |
Get the relative rank of the two strings. More... | |
virtual PINDEX | HashFunction () const |
Calculate a hash value for use in sets and dictionaries. More... | |
virtual PBoolean | IsOpen () const |
Determine if the channel is currently open. More... | |
virtual P_INT_PTR | GetHandle () const |
Get the integer operating system handle for the channel. More... | |
FILE * | FDOpen (const char *mode) |
Re-open the device using the stdio library. More... | |
virtual PChannel * | GetBaseReadChannel () const |
Get the base channel of channel indirection using PIndirectChannel. More... | |
virtual PChannel * | GetBaseWriteChannel () const |
Get the base channel of channel indirection using PIndirectChannel. More... | |
void | SetReadTimeout (const PTimeInterval &time) |
Set the timeout for read operations. More... | |
PTimeInterval | GetReadTimeout () const |
Get the timeout for read operations. More... | |
PINDEX | GetLastReadCount () const |
Get the number of bytes read by the last Read() call. More... | |
virtual int | ReadChar () |
Read a single character from the channel. More... | |
PBoolean | ReadBlock (void *buf, PINDEX len) |
Read len bytes into the buffer from the channel. More... | |
PString | ReadString (PINDEX len) |
Read len character into a string from the channel. More... | |
void | SetWriteTimeout (const PTimeInterval &time) |
Set the timeout for write operations to complete. More... | |
PTimeInterval | GetWriteTimeout () const |
Get the timeout for write operations to complete. More... | |
virtual PBoolean | Write (const void *buf, PINDEX len, const void *) |
Low level write to the channel with marker. More... | |
virtual PINDEX | GetLastWriteCount () const |
Get the number of bytes written by the last Write() call. More... | |
PBoolean | WriteChar (int c) |
Write a single character to the channel. More... | |
PBoolean | WriteString (const PString &str) |
Write a string to the channel. More... | |
~PChannel () | |
Close down the channel. More... | |
Errors | GetErrorCode (ErrorGroup group=NumErrorGroups) const |
Get normalised error code. More... | |
int | GetErrorNumber (ErrorGroup group=NumErrorGroups) const |
Get OS errro code. More... | |
virtual PString | GetErrorText (ErrorGroup group=NumErrorGroups) const |
Get error message description. More... | |
virtual bool | ReadAsync (AsyncContext &context) |
Begin an asynchronous read from channel. More... | |
virtual void | OnReadComplete (AsyncContext &context) |
User callback function for when a ReadAsync() call has completed or timed out. More... | |
virtual bool | WriteAsync (AsyncContext &context) |
Begin an asynchronous write from channel. More... | |
virtual void | OnWriteComplete (AsyncContext &context) |
User callback function for when a WriteAsync() call has completed or timed out. More... | |
virtual PBoolean | Close () |
Close the channel, shutting down the link to the data source. More... | |
virtual bool | SetLocalEcho (bool localEcho) |
Set local echo mode. More... | |
virtual bool | FlowControl (const void *flowData) |
Flow Control information Pass data to the channel for flowControl determination. More... | |
PBoolean | SetBufferSize (PINDEX newSize) |
Set the iostream buffer size for reads and writes. More... | |
PBoolean | SendCommandString (const PString &command) |
Send a command meta-string. More... | |
void | AbortCommandString () |
Abort a command string that is in progress. More... | |
![]() | |
unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
void | SetTraceContextIdentifier (unsigned id) |
void | GetTraceContextIdentifier (PObject &obj) |
void | GetTraceContextIdentifier (PObject *obj) |
void | SetTraceContextIdentifier (const PObject &obj) |
void | SetTraceContextIdentifier (const PObject *obj) |
virtual | ~PObject () |
template<class CLS > | |
CLS * | CloneAs () const |
As for Clone() but converts to specified type. More... | |
virtual const char * | GetClass (unsigned ancestor=0) const |
Get the current dynamic type of the object instance. More... | |
PBoolean | IsClass (const char *cls) const |
virtual PBoolean | InternalIsDescendant (const char *clsName) const |
Determine if the dynamic type of the current instance is a descendent of the specified class. More... | |
__inline const PObject * | PTraceObjectInstance () const |
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
Determine the byte wise comparison of two objects. More... | |
bool | operator== (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator!= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator< (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator> (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator<= (const PObject &obj) const |
Compare the two objects. More... | |
bool | operator>= (const PObject &obj) const |
Compare the two objects. More... | |
virtual void | PrintOn (ostream &strm) const |
Output the contents of the object to the stream. More... | |
virtual void | ReadFrom (istream &strm) |
Input the contents of the object from the stream. More... | |
![]() | |
PSocksProtocol (WORD port) | |
virtual | ~PSocksProtocol () |
PBoolean | SetServer (const PString &hostname, const char *service="socks 1080") |
PBoolean | SetServer (const PString &hostname, WORD port) |
void | SetAuthentication (const PString &username, const PString &password) |
Set the username and password for the SOCKS server authentication. More... | |
Protected Member Functions | |
virtual void | SetErrorCodes (PChannel::Errors errCode, int osErr) |
P_INT_PTR | TransferHandle (PSocksSocket &destination) |
![]() | |
virtual PBoolean | OpenSocket () |
virtual PBoolean | OpenSocket (int ipAdressFamily) |
Open an IPv4 or IPv6 socket. More... | |
virtual bool | InternalListen (const Address &bind, unsigned queueSize, WORD port, Reusability reuse) |
virtual const char * | GetProtocolName () const |
This function returns the protocol name for the socket type. More... | |
![]() | |
PIPSocket () | |
Create a new Internet Protocol socket based on the port number specified. More... | |
![]() | |
PSocket () | |
virtual PBoolean | ConvertOSError (P_INT_PTR libcReturnValue, ErrorGroup group=LastGeneralError) |
Convert an operating system error into platform independent error. More... | |
int | os_close () |
int | os_socket (int af, int type, int proto) |
PBoolean | os_connect (struct sockaddr *sin, socklen_t size) |
PBoolean | os_vread (Slice *slices, size_t sliceCount, int flags, struct sockaddr *from, socklen_t *fromlen) |
PBoolean | os_vwrite (const Slice *slices, size_t sliceCount, int flags, struct sockaddr *to, socklen_t tolen) |
PBoolean | os_accept (PSocket &listener, struct sockaddr *addr, socklen_t *size) |
virtual int | os_errno () const |
![]() | |
PChannel (const PChannel &) | |
PChannel & | operator= (const PChannel &) |
int | ReadCharWithTimeout (PTimeInterval &timeout) |
Read a character with specified timeout. More... | |
PBoolean | ReceiveCommandString (int nextChar, const PString &reply, PINDEX &pos, PINDEX start) |
PBoolean | PXSetIOBlock (PXBlockType type, const PTimeInterval &timeout) |
P_INT_PTR | GetOSHandleAsInt () const |
int | PXClose () |
PChannel () | |
Create the channel. More... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
![]() | |
PBoolean | ConnectSocksServer (PTCPSocket &thisSocket) |
virtual PBoolean | SendSocksCommand (PTCPSocket &socket, BYTE command, const char *hostname, PIPSocket::Address addr) |
virtual PBoolean | ReceiveSocksResponse (PTCPSocket &socket, PIPSocket::Address &addr, WORD &port) |
Additional Inherited Members | |
![]() | |
enum | Reusability { CanReuseAddress, AddressIsExclusive } |
Flags to reuse of port numbers in Listen() function. More... | |
![]() | |
enum | PXBlockType { PXReadBlock, PXWriteBlock, PXAcceptBlock, PXConnectBlock } |
enum | Errors { NoError, NotFound, FileExists, DiskFull, AccessDenied, DeviceInUse, BadParameter, NoMemory, NotOpen, Timeout, Interrupted, BufferTooSmall, Miscellaneous, ProtocolFailure, Unavailable, NumNormalisedErrors } |
Normalised error codes. More... | |
enum | ErrorGroup { LastReadError, LastWriteError, LastGeneralError, NumErrorGroups } |
Error groups. More... | |
typedef PNotifierTemplate < PChannel::AsyncContext & > | AsyncNotifier |
enum | ShutdownValue { ShutdownRead = 0, ShutdownWrite = 1, ShutdownReadAndWrite = 2 } |
![]() | |
enum | { DefaultServerPort = 1080 } |
![]() | |
static int | GetDefaultIpAddressFamily () |
Set the default IP address familly. More... | |
static void | SetDefaultIpAddressFamily (int ipAdressFamily) |
static void | SetDefaultIpAddressFamilyV4 () |
static const PIPSocket::Address & | GetDefaultIpAny () |
static const PIPSocket::Address & | GetInvalidAddress () |
static void | SetSuppressCanonicalName (bool suppress) |
Set flag for suppress getting canonical name when doing lookup via hostname. More... | |
static bool | GetSuppressCanonicalName () |
Get flag for suppress getting canonical name when doing lookup via hostname. More... | |
static PString | GetHostName () |
Get the "official" host name for the host specified or if none, the host this process is running on. More... | |
static PString | GetHostName (const PString &hostname) |
static PString | GetHostName (const Address &addr) |
static PBoolean | GetHostAddress (Address &addr) |
Get the Internet Protocol address for the specified host, or if none specified, for the host this process is running on. More... | |
static PBoolean | GetHostAddress (const PString &hostname, Address &addr) |
static PStringArray | GetHostAliases (const PString &hostname) |
Get the alias host names for the specified host. More... | |
static PStringArray | GetHostAliases (const Address &addr) |
static PBoolean | IsLocalHost (const PString &hostname) |
Determine if the specified host is actually the local machine. More... | |
static void | ClearNameCache () |
Clear the name (DNS) cache. More... | |
static PBoolean | GetRouteTable (RouteTable &table) |
Get the systems route table. More... | |
static RouteTableDetector * | CreateRouteTableDetector () |
Create an object that can wait for a change in the route table or active network interfaces. More... | |
static PBoolean | GetInterfaceTable (InterfaceTable &table, PBoolean includeDown=false) |
Get a list of all interfaces. More... | |
static PString | GetInterface (const Address &addr) |
Get the interface name for the specified local IP address. More... | |
static Address | GetInterfaceAddress (const PString &ifName, unsigned version=4) |
Get the interface name for the specified local IP address. More... | |
static PString | GetInterfaceMACAddress (const char *ifName=NULL) |
Get MAC address of interface. More... | |
static Address | GetNetworkInterface (unsigned version=4) |
Get the address of the first interface to the "Internet". More... | |
static Address | GetGatewayAddress (unsigned version=4) |
Get the IP address that is being used as the gateway, that is, the computer that packets on the default route will be sent. More... | |
static PString | GetGatewayInterface (unsigned version=4) |
Get the name for the interface that is being used as the gateway, that is, the interface that packets on the default route will be sent. More... | |
static Address | GetGatewayInterfaceAddress (unsigned version=4) |
Get the IP address for the interface that is being used as the gateway, that is, the interface that packets on the default route will be sent. More... | |
static Address | GetRouteInterfaceAddress (const Address &remoteAddress) |
Get the interface address that will be used to reach the specified remote address. More... | |
![]() | |
static int | Select (PSocket &sock1, PSocket &sock2) |
Select a socket with available data. More... | |
static int | Select (PSocket &sock1, PSocket &sock2, const PTimeInterval &timeout) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read, const PTimeInterval &timeout) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read, SelectList &write) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read, SelectList &write, const PTimeInterval &timeout) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read, SelectList &write, SelectList &except) |
Select a socket with available data. More... | |
static Errors | Select (SelectList &read, SelectList &write, SelectList &except, const PTimeInterval &timeout) |
Select a socket with available data. More... | |
static WORD | Host2Net (WORD v) |
Convert from host to network byte order. More... | |
static DWORD | Host2Net (DWORD v) |
Convert from host to network byte order. More... | |
static WORD | Net2Host (WORD v) |
Convert from network to host byte order. More... | |
static DWORD | Net2Host (DWORD v) |
Convert from network to host byte order. More... | |
static WORD | GetProtocolByName (const PString &name) |
Get the number of the protocol associated with the specified name. More... | |
static PString | GetNameByProtocol (WORD proto) |
Get the name of the protocol number specified. More... | |
static WORD | GetPortByService (const char *protocol, const PString &service) |
Get the port number for the specified service name. More... | |
static PString | GetServiceByPort (const char *protocol, WORD port) |
Get the service name from the port number. More... | |
![]() | |
QoS | m_qos |
![]() | |
PString | serverHost |
WORD | serverPort |
PString | authenticationUsername |
PString | authenticationPassword |
PIPSocket::Address | remoteAddress |
WORD | remotePort |
PIPSocket::Address | localAddress |
WORD | localPort |
![]() |
This is an ancestor class allowing access to a SOCKS servers (version 4 and 5).
PSocksSocket::PSocksSocket | ( | WORD | port = 0 | ) |
PBoolean PSocksSocket::Accept | ( | ) |
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 that this function will block until a remote system connects to the port number specified in the "listening" socket.
A further note is that when the version that uses a parameter is used, the socket
parameter is automatically closed and its operating system handle transferred to the current object. This occurs regardless of the return value of the function.
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 that this function will block until a remote system connects to the port number specified in the "listening" socket.
socket | Listening socket making the connection. |
Reimplemented from PTCPSocket.
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.
The port number as defined by the object instance construction or the PIPSocket::SetPort() function.
address | Address of remote machine to connect to. |
Reimplemented from PIPSocket.
addr | Address of remote machine to connect to. |
Reimplemented from PIPSocket.
Get the Internet Protocol address for the local host.
addr | Variable to receive hosts IP address |
addr | Variable to receive peer hosts IP address |
port | Variable to receive peer hosts port number |
Get the Internet Protocol address for the peer host the socket is connected to.
addr | Variable to receive hosts IP address |
addr | Variable to receive peer hosts IP address |
port | Variable to receive peer hosts port number |
|
virtual |
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 PIPSocket::SetPort() function.
For the UDP protocol, the queueSize
parameter is ignored.
queueSize | Number of pending accepts that may be queued. |
port | Port number to use for the connection. |
reuse | Can/Cant listen more than once. |
Reimplemented from PIPSocket.
|
protectedvirtual |
Implements PSocksProtocol.
|
protected |