socket_recv
Bağlı bir soketten veri alır
&reftitle.description;
intfalsesocket_recv
Socketsoket
stringnulltampon
intuzunluk
intseçenekler
socket_recv işlevi soket ile
belirtilen soketten tampon içindeki
uzunluk baytı okur. socket_recv
ayrıca, bağlantılı soketlerden veri toplama için de kullanılır. Buna ek
olarak işlevin davranışlarında değişiklik yapmak için bir veya daha fazla
sayıda seçenek belirtilebilir.
tampon gönderimli aktarılır, dolayısıyla işlevin
bağımsız değişkenleri arasında bir değişken olarak yer almalıdır.
socket_recv tarafından socket
soketinden okunan veri tampon'a konarak döndürülür.
&reftitle.parameters;
soket
socket_create ile önceden oluşturulmuş geçerli bir
Socket örneği.
tampon
Verinin alınacağı değişken burada belirtilir. Bir hata oluşursa,
bağlantı kesilirse veya alınacak bir veri yoksa
tampon'dan &null; döner.
uzunluk
Okunacak azami bayt sayısını belirler.
seçenekler
Aşağıdaki seçeneklerin bitsel VEYAlanmış bir birleşimi.
Olası seçenekler
MSG_OOB
Band dışı veri gönderilir.
MSG_EOR
Bir kayıt imi belirtir. Gönderilen veri kaydın tamamlanmasını
sağlar.
MSG_EOF
Soketin gönderici tarafı kapatılır ve gönderilen verinin sonuna
bununla ilgili bir bildirim yerleştirilir. Gönderilen veri
aktarımın tamamlanmasını sağlar.
MSG_DONTROUTE
Yönlendirme es geçilip doğrudan arabirim kullanılır.
&reftitle.returnvalues;
Bir hata oluşmuşsa &false; yoksa alınan bayt sayısını döndürür. Oluşan
hatanın kodu socket_last_error ile açıklaması ise, elde
edilen hata kodu socket_strerror işlevine aktarılarak
alınabilir.
&reftitle.changelog;
&Version;
&Description;
&sockets.changelog.socket-param;
&reftitle.examples;
- socket_recv örneği
Bu örnek, arasında socket_recv kullanan ilk örneğin yeniden yazılmışıdır.
TCP/IP Bağlantısı\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:
TCP/IP Bağlantısı
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.
]]>