Class Socket

CakePHP network socket connection class.

Core base class for network communication.

Cake\Network\Socket uses Cake\Core\InstanceConfigTrait
Namespace: Cake\Network
Location: Network/Socket.php

Properties summary

  • $_connectionErrors protected
    array

    Used to capture connection warnings which can happen when there are SSL errors for example.

  • $_defaultConfig protected
    array
    Default configuration settings for the socket connection
  • $_encryptMethods protected
    array
    Contains all the encryption methods available
  • $connected public
    boolean
    This boolean contains the current state of the Socket class
  • $connection public
    resource|null
    Reference to socket connection resource
  • $description public
    string
    Object description
  • $encrypted public
    boolean
    True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call
  • $lastError public
    array
    This variable contains an array with the last error number (num) and string (str)

Inherited Properties

Method Summary

  • __construct() public
    Constructor.
  • __destruct() public
    Destructor, used to disconnect from current connection.
  • 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
    Get the IP address of the current connection.
  • addresses() public
    Get all IP addresses associated with the current connection.
  • connect() public
    Connect the socket to the given host and port.
  • context() public
    Get the connection context.
  • disconnect() public
    Disconnect the socket from the current connection.
  • Encrypts current stream socket, using one of the defined encryption methods
  • host() public
    Get the host name of the current connection.
  • lastError() public
    Get the last error as a string.
  • read() public

    Read 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 Object::__construct got executed)
  • Set the last error.
  • write() public
    Write data to the socket.

Method Detail

__construct()source public

__construct( array $config [] )

Constructor.

Parameters

array $config optional []
Socket configuration, which will be merged with the base configuration

See

\Cake\Network\Socket::$_baseConfig

__destruct()source public

__destruct( )

Destructor, used to disconnect from current connection.

_connectionErrorHandler()source 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 number.
string $message
Message.

_setSslContext()source protected

_setSslContext( string $host )

Configure the SSL context options.

Parameters

string $host
The host name being connected to.

address()source public

address( )

Get the IP address of the current connection.

Returns

string
IP address

addresses()source public

addresses( )

Get all IP addresses associated with the current connection.

Returns

array
IP addresses

connect()source public

connect( )

Connect the socket to the given host and port.

Returns

boolean
Success

Throws

Cake\Network\Exception\SocketException

context()source public

context( )

Get the connection context.

Returns

null|array
Null when there is no connection, an array when there is.

disconnect()source public

disconnect( )

Disconnect the socket from the current connection.

Returns

boolean
Success

enableCrypto()source public

enableCrypto( string $type , string $clientOrServer 'client' , boolean $enable true )

Encrypts current stream socket, using one of the defined encryption methods

Parameters

string $type
can be one of 'ssl2', 'ssl3', 'ssl23' or 'tls'
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

boolean
True on success

Throws

InvalidArgumentException
When an invalid encryption scheme is chosen.
Cake\Network\Exception\SocketException
When attempting to enable SSL/TLS fails

See

stream_socket_enable_crypto

host()source public

host( )

Get the host name of the current connection.

Returns

string
Host name

lastError()source public

lastError( )

Get the last error as a string.

Returns

string|null
Last error

read()source public

read( integer $length 1024 )

Read 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

mixed
Socket data

reset()source public

reset( array|null $state null )

Resets the state of this Socket instance to it's initial state (before Object::__construct got executed)

Parameters

array|null $state optional null
Array with key and values to reset

Returns

boolean
True on success

setLastError()source public

setLastError( integer $errNum , string $errStr )

Set the last error.

Parameters

integer $errNum
Error code
string $errStr
Error string

write()source public

write( string $data )

Write data to the socket.

Parameters

string $data
The data to write to the socket.

Returns

integer
Bytes written.

Methods used from Cake\Core\InstanceConfigTrait

_configDelete()source protected

_configDelete( string $key )

Deletes a single config key.

Parameters

string $key
Key to delete.

Throws

Cake\Core\Exception\Exception
if attempting to clobber existing config

_configRead()source protected

_configRead( string|null $key )

Reads a config key.

Parameters

string|null $key
Key to read.

Returns

mixed

_configWrite()source protected

_configWrite( string|array $key , mixed $value , boolean|string $merge false )

Writes a config key.

Parameters

string|array $key
Key to write to.
mixed $value
Value to write.
boolean|string $merge optional false

True to merge recursively, 'shallow' for simple merge, false to overwrite, defaults to false.

Throws

Cake\Core\Exception\Exception
if attempting to clobber existing config

config()source public

config( string|array|null $key null , mixed|null $value null , boolean $merge true )

Gets/Sets the config.

Usage

Reading the whole config:

$this->config();

Reading a specific value:

$this->config('key');

Reading a nested value:

$this->config('some.nested.key');

Setting a specific value:

$this->config('key', $value);

Setting a nested value:

$this->config('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->config(['one' => 'value', 'another' => 'value']);

Deprecated

3.4.0 use setConfig()/getConfig() instead.

Parameters

string|array|null $key optional null
The key to get/set, or a complete array of configs.
mixed|null $value optional null
The value to set.
boolean $merge optional true
Whether to recursively merge or overwrite existing config, defaults to true.

Returns

mixed
Config value being read, or the object itself on write operations.

Throws

Cake\Core\Exception\Exception
When trying to set a key that is invalid.

configShallow()source public

configShallow( string|array $key , mixed|null $value null )

Merge provided config with existing config. Unlike config() which does a recursive merge for nested keys, this method does a simple merge.

Setting a specific value:

$this->configShallow('key', $value);

Setting a nested value:

$this->configShallow('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->configShallow(['one' => 'value', 'another' => 'value']);

Parameters

string|array $key
The key to set, or a complete array of configs.
mixed|null $value optional null
The value to set.

Returns


$this

getConfig()source public

getConfig( string|null $key null , mixed $default null )

Returns the config.

Usage

Reading the whole config:

$this->getConfig();

Reading a specific value:

$this->getConfig('key');

Reading a nested value:

$this->getConfig('some.nested.key');

Reading with default value:

$this->getConfig('some-key', 'default-value');

Parameters

string|null $key optional null
The key to get or null for the whole config.
mixed $default optional null
The return value when the key does not exist.

Returns

mixed
Config value being read.

setConfig()source public

setConfig( string|array $key , mixed|null $value null , boolean $merge true )

Sets the config.

Usage

Setting a specific value:

$this->setConfig('key', $value);

Setting a nested value:

$this->setConfig('some.nested.key', $value);

Updating multiple config settings at the same time:

$this->setConfig(['one' => 'value', 'another' => 'value']);

Parameters

string|array $key
The key to set, or a complete array of configs.
mixed|null $value optional null
The value to set.
boolean $merge optional true
Whether to recursively merge or overwrite existing config, defaults to true.

Returns


$this

Throws

Cake\Core\Exception\Exception
When trying to set a key that is invalid.

Properties detail

$_connectionErrorssource

protected array

Used to capture connection warnings which can happen when there are SSL errors for example.

[]

$_defaultConfigsource

protected array

Default configuration settings for the socket connection

[
    'persistent' => false,
    'host' => 'localhost',
    'protocol' => 'tcp',
    'port' => 80,
    'timeout' => 30
]

$_encryptMethodssource

protected array

Contains all the encryption methods available

[
    // @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
]

$connectedsource

public boolean

This boolean contains the current state of the Socket class

false

$connectionsource

public resource|null

Reference to socket connection resource

$descriptionsource

public string

Object description

'Remote DataSource Network Socket Interface'

$encryptedsource

public boolean

True if the socket stream is encrypted after a Cake\Network\Socket::enableCrypto() call

false

$lastErrorsource

public array

This variable contains an array with the last error number (num) and string (str)

[]

© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.4/class-Cake.Network.Socket.html