Note that stream_socket_recvfrom() bypasses stream wrappers including TLS/SSL. While reading from an encrypted stream with fread() will return decrypted data, using stream_socket_recvfrom() will give you the original encrypted bytes.
stream_socket_recvfrom
(PHP 5)
stream_socket_recvfrom — Bağlı olsun ya da olmasın bir soketten veri alır
Açıklama
$soket
, int $uzunluk
[, int $seçenekler = 0
[, string &$adres
]] )
stream_socket_recvfrom() işlevi uzak bir soketten
uzunluk baytlık veri alır.
Değiştirgeler
-
soket -
Uzak soket.
-
uzunluk -
soket'tan alınacak bayt sayısı. -
seçenekler -
seçeneklerşunların bir birleşimi olarak belirtilebilir:seçenekleriçin olası değerlerSTREAM_OOBBand dışı veri alınır. STREAM_PEEKVeri soketten alınır fakat tampon okunmamış bırakılır. Sonraki fread() veya stream_socket_recvfrom() çağrıları aynı veriyi görür. -
adres -
Belirtildiği takdirde uzak soketin adresi olarak ele alınır.
Dönen Değerler
Okunan veriyi dizge olarak döndürür.
Örnekler
Örnek 1 - stream_socket_recvfrom() örneği
<?php
/* localhost üzerinde 1234 portuna bir sunucu soketi açalım */
$server = stream_socket_server('tcp://127.0.0.1:1234');
/* Bir bağlantı kabul edelim */
$socket = stream_socket_accept($server);
/* Band dışı veri olarak bir paket yakalayalım (MTU boyutu 1500 olsun) */
echo "Alınan band dışı veri: '" .
stream_socket_recvfrom($socket, 1500, STREAM_OOB) . "'\n";
/* Normal band dışı veriye bir göz atalım ama okunmamış bırakalım */
echo "Veri: '" . stream_socket_recvfrom($socket, 1500, STREAM_PEEK) . "'\n";
/* Aynı paketi tekrar alalım ama bu sefer tampondan silelim */
echo "Veri: '" . stream_socket_recvfrom($socket, 1500) . "'\n";
/* Portu kapatalım */
fclose($socket);
fclose($server);
?>
Notlar
Bilginize:
uzunlukbayttan daha uzun bir veri alınırsa, verinin alındığı soketin türüne bağlı olarak (UDP gibi) fazla baytlar iptal edilebilir.
Bilginize:
Sokete dayalı akımlar üzerindeki stream_socket_recvfrom() çağrıları, tamponlu akım işlevlerinden ( fread() veya stream_get_line() gibi) sonra, veriyi soketten akım tamponunu devreden çıkararak doğrudan doğruya okur.
Ayrıca Bakınız
- stream_socket_sendto() - Bir sokete bağlı olsun ya da olmasın, bir ileti gönderir
- stream_socket_client() - Bir Genel Ağ veya Unix alan soketi bağlantısı açar
- stream_socket_server() - Bir Genel Ağ veya Unix alan sunucusu soketi oluşturur
This method may return a peer address not compatible with stream_socket_sendto() if in ipv6.
The ip returned by recvfrom is not within brackets ([]), and has the port appended, which makes it look like ::1:1234. To cut it properly, use strrpos()
