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 锟街节碉拷锟斤拷锟捷o拷锟斤拷锟斤拷锟斤拷锟斤拷 buf 锟叫★拷 socket_recv() 锟斤拷锟节达拷锟斤拷锟斤拷锟接碉拷socket锟叫斤拷锟斤拷锟斤拷锟捷★拷锟斤拷锟斤拷之锟解,锟斤拷锟斤拷锟借定一锟斤拷锟斤拷锟斤拷 flags 锟斤拷锟斤拷锟狡猴拷锟斤拷锟侥撅拷锟斤拷锟斤拷为锟斤拷

buf 锟斤拷锟斤拷锟斤拷锟斤拷式锟斤拷锟捷o拷锟斤拷吮锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟叫э拷谋锟斤拷锟斤拷锟斤拷锟� socket 锟叫斤拷锟秸碉拷锟斤拷锟斤拷锟捷斤拷锟结保锟斤拷锟斤拷 buf 锟叫★拷

锟斤拷锟斤拷

socket

锟斤拷锟斤拷 socket 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷 socket_create() 锟斤拷锟斤拷锟斤拷socket锟斤拷源锟斤拷

buf

锟斤拷socket锟叫伙拷取锟斤拷锟斤拷锟捷斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 buf 锟狡讹拷锟侥憋拷锟斤拷锟叫★拷 锟斤拷锟斤拷写锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷颖锟斤拷锟斤拷茫锟斤拷锟斤拷莶锟斤拷锟斤拷玫鹊龋锟� buf 锟斤拷锟斤拷锟斤拷为 NULL锟斤拷

len

锟斤拷锟斤拷锟斤拷锟轿� len 锟街节碉拷锟斤拷锟捷斤拷锟斤拷锟斤拷锟秸★拷

flags

flags 锟斤拷值锟斤拷锟斤拷为锟斤拷锟斤拷锟斤拷锟斤拷flag锟斤拷锟斤拷稀锟绞癸拷冒锟轿伙拷锟斤拷锟斤拷锟斤拷(|)锟斤拷 锟斤拷喜锟酵拷锟絝lag锟斤拷

锟斤拷锟矫碉拷 flags
Flag 锟斤拷锟斤拷
MSG_OOB 锟斤拷锟斤拷锟斤拷锟竭斤拷锟斤拷锟斤拷锟�
MSG_PEEK 锟接斤拷锟杰讹拷锟叫碉拷锟斤拷始位锟矫斤拷锟斤拷锟斤拷锟捷o拷锟斤拷锟斤拷锟斤拷锟斤拷锟角从斤拷锟杰讹拷锟斤拷锟斤拷锟狡筹拷锟斤拷
MSG_WAITALL 锟节斤拷锟秸碉拷锟斤拷锟斤拷 len 锟街节碉拷锟斤拷锟斤拷之前锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟酵o拷疟锟斤拷锟斤拷校锟絙lock锟斤拷锟斤拷锟斤拷锟角o拷 锟斤拷锟斤拷锟斤拷盏锟斤拷卸锟斤拷藕牛锟斤拷锟皆讹拷谭锟斤拷锟斤拷锟斤拷峡锟斤拷锟斤拷樱锟斤拷煤锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟� len 锟街节碉拷锟斤拷锟捷★拷
MSG_DONTWAIT 锟斤拷锟斤拷贫锟斤拷烁锟絝lag锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟绞癸拷锟饺拷锟斤拷锟斤拷锟斤拷锟街革拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷谩锟�

锟斤拷锟斤拷值

socket_recv() 锟斤拷锟斤拷一锟斤拷锟斤拷锟街o拷锟斤拷示锟斤拷锟秸碉拷锟斤拷锟街斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷舜锟斤拷锟斤拷蚍祷锟� 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.