|
stream_socket_client
Open Internet or Unix domain socket connection
(PHP 5)
Initiates a stream or datagram connection to the destination specified
by remote_socket. The type of socket created
is determined by the transport specified using standard URL formatting:
Note:
If you need to set a timeout for reading/writing data over the socket, use stream_set_timeout(), as the timeout parameter to stream_socket_client() only applies while connecting the socket.
Note:
The timeout parameter only applies if you are not making an asynchronous connection attempt. stream_socket_client() returns a stream resource which may be used together with the other file functions (such as fgets(), fgetss(), fwrite(), fclose(), and feof()).
If the call fails, it will return Depending on the environment, the Unix domain or the optional connect timeout may not be available. A list of available transports can be retrieved using stream_get_transports(). See Appendix Q, List of Supported Socket Transports for a list of built in transports. The stream will by default be opened in blocking mode. You can switch it to non-blocking mode by using stream_set_blocking(). Example 2385. stream_socket_client() Example<?php
Example 2386. Using UDP connection<?php
Warning:
UDP sockets will sometimes appear to have opened without an error, even if the remote host is unreachable. The error will only become apparent when you read or write data to/from the socket. The reason for this is because UDP is a "connectionless" protocol, which means that the operating system does not try to establish a link for the socket until it actually needs to send or receive data.
Note:
When specifying a numerical IPv6 address
(e.g. fe80::1) you must enclose the IP in square brackets. For example,
See also stream_socket_server(), stream_set_blocking(), stream_set_timeout(), stream_select(), fgets(), fgetss(), fwrite(), fclose(), feof(), and the Curl extension. Code Examples / Notes » stream_socket_clientwbeaver
# Some may find it useful to know that your caCert # must be in pem format, and that PHP seems to like # your key, cert, and cacert pem's to be concatenated # in a single file (I suffered various "unknown chain" # errors, otherwise) # # So, (linux users), concat your components as follows: # (where current working dir is dir where # cert components are stored) # # cat key.pem >certchain.pem # cat cert.pem >>certchain.pem # cat cacert.pem >>certchain.pem # # Then, the php.... ################################## <?php $host = 'host.domain.tld'; $port = 1234; $timeout = 10; $cert = '/path/to/your/certchain/certchain.pem'; $context = stream_context_create(array('ssl'=>array('local_cert'=> $cert, ))); if ($fp = stream_socket_client('ssl://'.$host.':'.$port, $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context)) { fwrite($fp, "\n"); echo fread($fp,8192); fclose($fp); } else { echo "ERROR: $errno - $errstr<br />\n"; } ?> |
Change Languagestream_bucket_append stream_bucket_make_writeable stream_bucket_new stream_bucket_prepend stream_context_create stream_context_get_default stream_context_get_options stream_context_set_option stream_context_set_params stream_copy_to_stream stream_encoding stream_filter_append stream_filter_prepend stream_filter_register stream_filter_remove stream_get_contents stream_get_filters stream_get_line stream_get_meta_data stream_get_transports stream_get_wrappers stream_register_wrapper stream_resolve_include_path stream_select stream_set_blocking stream_set_timeout stream_set_write_buffer stream_socket_accept stream_socket_client stream_socket_enable_crypto stream_socket_get_name stream_socket_pair stream_socket_recvfrom stream_socket_sendto stream_socket_server stream_socket_shutdown stream_wrapper_register stream_wrapper_restore stream_wrapper_unregister |