Class CakeSocket
CakePHP network socket connection class.
Core base class for network communication.
Direct Subclasses
Copyright: Copyright (c) Cake Software Foundation, Inc. (https://cakefoundation.org)
License: MIT License
Location: Cake/Network/CakeSocket.php
Properties summary
-
$_baseConfig
protectedarray
Base configuration settings for the socket connection -
$_connectionErrors
protectedarray
Used to capture connection warnings which can happen when there are SSL errors for example.
-
$_encryptMethods
protectedarray
Contains all the encryption methods available -
$config
publicarray
Configuration settings for the socket connection -
$connected
publicboolean
This boolean contains the current state of the CakeSocket class -
$connection
publicresource
Reference to socket connection resource -
$description
publicstring
CakeSocket description -
$encrypted
publicboolean
True if the socket stream is encrypted after a CakeSocket::enableCrypto() call -
$lastError
publicarray
This variable contains an array with the last error number (num) and string (str)
Method Summary
-
__construct() public
Constructor. -
__destruct() public
Destructor, used to disconnect from current connection. -
_addTlsVersions() protected
Add TLS versions that are dependent on specific PHP versions. -
_connectionErrorHandler() protected
socket_stream_client() does not populate errNum, or $errStr when there are connection errors, as in the case of SSL verification failure.
-
_setSslContext() protected
Configure the SSL context options. -
address() public
Gets the IP address of the current connection. -
addresses() public
Gets all IP addresses associated with the current connection. -
connect() public
Connects the socket to the given host and port. -
context() public
Gets the connection context. -
disconnect() public
Disconnects the socket from the current connection. -
enableCrypto() public
Encrypts current stream socket, using one of the defined encryption methods. -
host() public
Gets the host name of the current connection. -
lastError() public
Gets the last error as a string. -
read() public
Reads data from the socket. Returns false if no data is available or no connection could be established.
-
reset() public
Resets the state of this Socket instance to it's initial state (before CakeObject::__construct got executed) -
setLastError() public
Sets the last error. -
write() public
Writes data to the socket.
Method Detail
__construct() public ¶
__construct( array $config = array() )
Constructor.
Parameters
- array $config optional array()
- Socket configuration, which will be merged with the base configuration
See
_addTlsVersions() protected ¶
_addTlsVersions( )
Add TLS versions that are dependent on specific PHP versions.
These TLS versions are not supported by older PHP versions, so we have to conditionally set them if they are supported.
As of PHP5.6.6, STREAM_CRYPTO_METHOD_TLS_CLIENT does not include TLS1.1 or 1.2. If we have TLS1.2 support we need to update the method map.
See
https://github.com/php/php-src/commit/10bc5fd4c4c8e1dd57bd911b086e9872a56300a0
_connectionErrorHandler() protected ¶
_connectionErrorHandler( integer $code , string $message )
socket_stream_client() does not populate errNum, or $errStr when there are connection errors, as in the case of SSL verification failure.
Instead we need to handle those errors manually.
Parameters
- integer $code
- Code.
- string $message
- Message.
_setSslContext() protected ¶
_setSslContext( string $host )
Configure the SSL context options.
Parameters
- string $host
- The host name being connected to.
address() public ¶
address( )
Gets the IP address of the current connection.
Returns
IP address
addresses() public ¶
addresses( )
Gets all IP addresses associated with the current connection.
Returns
IP addresses
context() public ¶
context( )
Gets the connection context.
Returns
Null when there is no connection, an array when there is.
disconnect() public ¶
disconnect( )
Disconnects the socket from the current connection.
Returns
Success
enableCrypto() public ¶
enableCrypto( string $type , string $clientOrServer = 'client' , boolean $enable = true )
Encrypts current stream socket, using one of the defined encryption methods.
Parameters
- string $type
- Type which can be one of 'sslv2', 'sslv3', 'sslv23', 'tls', 'tlsv1_1' or 'tlsv1_2'.
- string $clientOrServer optional 'client'
- Can be one of 'client', 'server'. Default is 'client'.
- boolean $enable optional true
- Enable or disable encryption. Default is true (enable)
Returns
True on success
Throws
When an invalid encryption scheme is chosen.
SocketException
When attempting to enable SSL/TLS fails.
See
read() public ¶
read( integer $length = 1024 )
Reads data from the socket. Returns false if no data is available or no connection could be established.
Parameters
- integer $length optional 1024
- Optional buffer length to read; defaults to 1024
Returns
Socket data
reset() public ¶
reset( array $state = null )
Resets the state of this Socket instance to it's initial state (before CakeObject::__construct got executed)
Parameters
- array $state optional null
- Array with key and values to reset
Returns
True on success
setLastError() public ¶
setLastError( integer $errNum , string $errStr )
Sets the last error.
Parameters
- integer $errNum
- Error code
- string $errStr
- Error string
Properties detail
$_baseConfig ¶
Base configuration settings for the socket connection
array( 'persistent' => false, 'host' => 'localhost', 'protocol' => 'tcp', 'port' => 80, 'timeout' => 30, 'cryptoType' => 'tls', )
$_connectionErrors ¶
Used to capture connection warnings which can happen when there are SSL errors for example.
array()
$_encryptMethods ¶
Contains all the encryption methods available
array( // @codingStandardsIgnoreStart 'sslv2_client' => STREAM_CRYPTO_METHOD_SSLv2_CLIENT, 'sslv3_client' => STREAM_CRYPTO_METHOD_SSLv3_CLIENT, 'sslv23_client' => STREAM_CRYPTO_METHOD_SSLv23_CLIENT, 'tls_client' => STREAM_CRYPTO_METHOD_TLS_CLIENT, 'sslv2_server' => STREAM_CRYPTO_METHOD_SSLv2_SERVER, 'sslv3_server' => STREAM_CRYPTO_METHOD_SSLv3_SERVER, 'sslv23_server' => STREAM_CRYPTO_METHOD_SSLv23_SERVER, 'tls_server' => STREAM_CRYPTO_METHOD_TLS_SERVER, // @codingStandardsIgnoreEnd )
$encrypted ¶
True if the socket stream is encrypted after a CakeSocket::enableCrypto() call
false
$lastError ¶
This variable contains an array with the last error number (num) and string (str)
array()