Bu örnek, Örnekler arasında socket_recv() kullanan ilk örneğin yeniden yazılmışıdır.
<?php
error_reporting(E_ALL);
echo "<h2>TCP/IP Bağlantısı</h2>\n";
/* HTTP hizmeti için portu öğrenelim. */
$service_port = getservbyname('www', 'tcp');
/* Hedef konağın IP adresini alalım. */
$address = gethostbyname('www.example.com');
/* Bir TCP/IP soketi oluşturalım. */
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if ($socket === false) {
echo "socket_create() başısız oldu: sebep: " .
socket_strerror(socket_last_error()) . "\n";
} else {
echo "OK.\n";
}
echo "'$service_port' portundun '$address' adresine bağlanmaya çalışılıyor...";
$result = socket_connect($socket, $address, $service_port);
if ($result === false) {
echo "socket_connect() başısız oldu:\nSebep: ($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 "HTTP HEAD isteğini gönderelim...";
socket_write($socket, $in, strlen($in));
echo "OK.\n";
echo "Yanıtı okuyalım:\n\n";
$buf = 'Bu bir veri tamponu verisidir.';
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";
?>
Yukarıdaki örnek şuna benzer bir çıktı üretir:
<h2>TCP/IP Bağlantısı</h2>
OK.
'80' portundan '208.77.188.166' adresine bağlanmaya çalışılıyor...OK.
HTTP HEAD isteği gönderiliyor...OK.
Okunan yanıt:
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=UTF-8
OK.