stream_socket_client
(PHP 5)
stream_socket_client — Open Internet or Unix domain socket connection
说明
resource stream_socket_client ( string $remote_socket [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") [, int $flags = STREAM_CLIENT_CONNECT [, resource $context ]]]]] )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: transport://target. For Internet Domain sockets (AF_INET) such as TCP and UDP, the target portion of the remote_socket parameter should consist of a hostname or IP address followed by a colon and a port number. For Unix domain sockets, the target portion should point to the socket file on the filesystem.
Note:
The stream will by default be opened in blocking mode. You can switch it to non-blocking mode by using stream_set_blocking().
参数
- remote_socket
-
Address to the socket to connect to.
- errno
-
Will be set to the system level error number if connection fails.
- errstr
-
Will be set to the system level error message if the connection fails.
- timeout
-
Number of seconds until the connect() system call should timeout.
Note: This parameter only applies when not making asynchronous connection attempts.
Note:
To set a timeout for reading/writing data over the socket, use the stream_set_timeout(), as the timeout only applies while making connecting the socket.
- flags
-
Bitmask field which may be set to any combination of connection flags. Currently the select of connection flags is limited to STREAM_CLIENT_CONNECT (default), STREAM_CLIENT_ASYNC_CONNECT and STREAM_CLIENT_PERSISTENT.
- context
-
A valid context resource created with stream_context_create().
返回值
On success a stream resource is returned which may be used together with the other file functions (such as fgets(), fgetss(), fwrite(), fclose(), and feof()), FALSE on failure.
错误/异常
On failure the errno and errstr arguments will be populated with the actual system level error that occurred in the system-level connect() call. If the value returned in errno is 0 and the function returned FALSE, it is an indication that the error occurred before the connect() call. This is most likely due to a problem initializing the socket. Note that the errno and errstr arguments will always be passed by reference.
范例
Example #1 stream_socket_client() example 以上例程的输出类似于:
<?php
$fp = stream_socket_client("tcp://www.example.com:80", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />
";
} else {
fwrite($fp, "GET / HTTP/1.0
Host: www.example.com
Accept: *
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god
");
fwrite($fp, "PASS secret
");
stream_socket_enable_crypto($fp, false);
while ($motd = fgets($fp)) {
echo $motd;
}
fclose($fp);
?>
参见
- OpenSSL 函数
- 所支持的套接字传输器(Socket Transports)列表