(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_recvfrom — Bağlantılı olsun olmasın bir soketten veri alır
$soket,&$tmmpon,$uzunluk,$seçenekler,&$adres,&$port = null
socket_recvfrom() işlevi belirtilen
soket üzerinden tampon
tamponundan uzunluk baytlık veriyi
adres'teki port. porttan
alır. İşlev bağlantılı (tcp) ve bağlantısız (udp) soketlerle çalışabilir.
Ayrıca, bazı seçeneklerle işlevin davranışında değişiklik yapılabilir.
isim ve port gönderimli
aktarılmalıdır. Soket bağlantı yönelimli değilse isim
bağımsız değişkenine uzak konağın IP adresi veya Unix soketinin dosya yolu
atanacaktır. Soketin bağlantı yönelimli olması durumunda
isim null'dur. Bunun yanında, soketin bir
bağlantısız AF_INET veya AF_INET6
soket olması durumunda port uzak konağın port
numarasını içerecektir.
Bilginize: Bu işlev ikil dosyalarla çalışırken dosya içeriğini değiştirmez.
soketsocket_create() ile oluşturulmuş geçerli bir Socket nesnesi.
tamponAlınan verinin yerleştirileceği tampon.
uzunlukUzak konaktan alınacak azami bayt sayısı.
seçeneklerAşağıdaki değerlerin bitsel VEYAlanmış (|) bir birleşimi olabilir
| Seçenek | Açıklama |
|---|---|
MSG_OOB |
Band dışı veri işlenir. |
MSG_PEEK |
Veri alım kuyruğunun başlangıcından alınırken kuyruktan silinmez. |
MSG_WAITALL |
uzunluk bayt alınıncaya kadar soket
baskılanır. Ancak, bir sinyal alınırsa veya uzak konak bağlantıyı
keserse işlev daha az veriyle dönebilir.
|
MSG_DONTWAIT |
İşlev bekleme kipinde olsa bile bu seçenek işlevin beklemeden dönmesine sebep olur. |
adres
Soket AF_UNIX türündeyse dosya yolu, bağlantısız
soketse uzak konağın IP adresi, bağlantı yönelimli bir soketse
null'dur.
port
Sadece AF_INET ve AF_INET6
soketlere uygulanır ve verinin alındığı uzak portu belirtir. Soket
bağlantı yönelimli ise port null olacaktır.
socket_recvfrom() işlevi alınan bayt sayısını döndürür.
Bir hata oluşmuşsa false döner. Hata kodu
socket_last_error() işlevi ile alınabilir. Bu hata
kodunu socket_strerror() işlevine aktararak hatayı
açıklayan dizgeyi alabilirsiniz.
| Sürüm: | Açıklama |
|---|---|
| 8.0.0 | soket artık bir
Socket örneği olabiliyor; evvelce
resource türündeydi. |
Örnek 1 - socket_recvfrom() örneği
<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_bind($socket, '127.0.0.1', 1223);
$from = '';
$port = 0;
socket_recvfrom($socket, $buf, 12, 0, $from, $port);
echo "$from adresinin $port. portundan $buf bayt alındı" . PHP_EOL;
?>Bu örnek 127.0.0.1 adresindeki 1223. port üzerinde bir UDP portu oluşturup uzak konaktan alınacak 12 bayta kadar veriyi gösterir.