socket_recv

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

socket_recv�������ӵ�socket��������

˵��

socket_recv ( resource $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��

���õ� flags ֵ
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_INETSOCK_STREAMSOL_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$instrlen($in));
echo 
"OK.\n";

echo 
"Reading response:\n\n";
$buf 'This is my buffer.';
if (
false !== ($bytes socket_recv($socket$buf2048MSG_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.