(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.
soket
socket_create() ile oluşturulmuş geçerli bir Socket nesnesi.
tampon
Alınan verinin yerleştirileceği tampon.
uzunluk
Uzak konaktan alınacak azami bayt sayısı.
seçenekler
Aş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.