(PHP 4 >= 4.1.0, PHP 5, PHP 7)
socket_recv — �������ӵ�socket��������
$socket
, string &$buf
, int $len
, int $flags
) : int
���� socket_recv() �� socket
�н��ܳ���Ϊ
len
�ֽڵ����ݣ��������� buf
�С�
socket_recv() ���ڴ������ӵ�socket�н������ݡ�����֮�⣬�����趨һ������ flags
�����ƺ����ľ�����Ϊ��
buf
��������ʽ���ݣ���˱�����һ������������Ч�ı�������
socket
�н��յ������ݽ��ᱣ���� buf
�С�
socket
���� socket
������һ���� socket_create()
������socket��Դ��
buf
��socket�л�ȡ�����ݽ����������� buf
�ƶ��ı����С�
����д������������ӱ����ã����ݲ����õȵȣ� buf
������Ϊ NULL
��
len
�������Ϊ len
�ֽڵ����ݽ������ա�
flags
flags
��ֵ����Ϊ��������flag����ϡ�ʹ�ð�λ�������(|)��
��ϲ�ͬ��flag��
Flag | ���� |
---|---|
MSG_OOB |
�������߽������ |
MSG_PEEK |
�ӽ��ܶ��е���ʼλ�ý������ݣ����������Ǵӽ��ܶ������Ƴ��� |
MSG_WAITALL |
�ڽ��յ����� len �ֽڵ�����֮ǰ�����һ������������ͣ�ű����У�block�������ǣ�
������յ��ж��źţ���Զ�̷������Ͽ����ӣ��ú������������� len �ֽڵ����ݡ�
|
MSG_DONTWAIT |
����ƶ��˸�flag�����������������������ʹ��ȫ��������ָ�����������á� |
socket_recv() ����һ�����֣���ʾ���յ����ֽ�������������˴����� FALSE
�������ʹ�� socket_last_error() ���ա�Ҳ��ʹ�ú��� socket_strerror()
��ȡ�ù��ڴ��������������
Example #1 socket_recv() ����
�÷�����ʹ�� socket_recv() ��д�� ���� �е� ��һ�����ӡ�
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Connection</h2>\n";
/* Get the port for the WWW service. */
$service_port = getservbyname('www', 'tcp');
/* Get the IP address for the target host. */
$address = gethostbyname('www.example.com');
/* Create a TCP/IP socket. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() failed: reason: " . socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "Attempting to connect to '$address' on port '$service_port'...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() failed.\nReason: ($result) " . socket_strerror(socket_last_error($socket)) . "\n";
} else {
echo "OK.\n";
}
$in = "HEAD / HTTP/1.1\r\n";
$in .= "Host: www.example.com\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';
echo "Sending HTTP HEAD request...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Reading response:\n\n";
$buf = 'This is my buffer.';
if (false !== ($bytes = socket_recv($socket, $buf, 2048, MSG_WAITALL))) {
echo "Read $bytes bytes from socket_recv(). Closing socket...";
} else {
echo "socket_recv() failed; reason: " . socket_strerror(socket_last_error($socket)) . "\n";
}
socket_close($socket);
echo $buf . "\n";
echo "OK.\n\n";
?>
The above example will produce something like:
<h2>TCP/IP Connection</h2> OK. Attempting to connect to '208.77.188.166' on port '80'...OK. Sending HTTP HEAD request...OK. Reading response: Read 123 bytes from socket_recv(). Closing socket...HTTP/1.1 200 OK Date: Mon, 14 Sep 2009 08:56:36 GMT Server: Apache/2.2.3 (Red Hat) Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT ETag: "b80f4-1b6-80bfd280" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html; CHARSET=gb2312 OK.