stream_socket_server

(PHP 5, PHP 7, PHP 8)

stream_socket_serverBir Genel Ağ veya Unix alan sunucusu soketi oluşturur

Açıklama

stream_socket_server(
    string $adres,
    int &$hatanum = null,
    string &$ileti = null,
    int $seçenekler = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN,
    ?resource $bağlam = null
): resource|false

Belirtilen adres üzerinde bir akım veya verikatarı soketi oluşturur.

Bu işlev, stream_socket_accept() kullanarak veri kabul etmek üzere bir soket oluşturmaktan başka bir şey yapmaz.

Bağımsız Değişkenler

adres

Oluşturulacak soketin türü standart URL biçemi kullanılarak belirtilir: şema://hedef.

TCP ve UDP gibi Genel Ağ Alanı soketleri (AF_INET) için, adres'in hedef parçası bir konak ismi veya IP adresinden sonra gelen bir ikinokta imi ve bir port numarasından oluşur. Unix alan soketleri için hedef parçası ise dosya sistemi üstündeki bir soket dosyasını göstermelidir.

Platforma bağlı olarak, Unix alan soketleri mevcut olmayabilir. Kullanılabilecek aktarım çeşitlerinin listesi stream_get_transports() işlevi ile alınabilir. Yerleşik aktarım türlerinin tam listesini Desteklenen Soket Aktarımlarının Listesi sayfasında bulabilirsiniz.

hatanum

Seçimlik hatanum ve ileti bağımsız değişkenleri belirtilmişse, bunlara socket(), bind() ve listen() sistem çağrılarında oluşan sistem seviyesindeki hatanın bilgisi atanır. Eğer hatanum bağımsız değişkeninde 0 döndüğünde işlev false döndürmüşse hata, bind() çağrısından önce oluşmuş demektir. Bu sorunla çoğunlukla soketin ilklendirilmesi sırasında karşılaşılır. hatanum ve ileti bağımsız değişkenlerinin daima gönderimli aktarılmasına dikkat edilmelidir.

ileti

hatanum bağımsız değişkeninin açıklamasına bakınız.

seçenekler

Soket oluşturma seçeneklerinden oluşan bir bit maskesi.

Bilginize:

UDP soketleri için, bu bağımsız değişkenle STREAM_SERVER_BIND değerini aktarmalısınız.

bağlam

stream_context_create() ile oluşturulmuş geçerli bir bağlam özkaynağı.

Dönen Değerler

Bir hata durumunda false, aksi takdirde oluşturulan soketi döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 bağlam artık null olabiliyor.

Örnekler

Örnek 1 - TCP sunucu soketlerinin kullanımı

<?php
$socket
= stream_socket_server("tcp://0.0.0.0:8000", $errno, $errstr);
if (!
$socket) {
echo
"$errstr ($errno)<br />\n";
} else {
while (
$conn = stream_socket_accept($socket)) {
fwrite($conn, 'Yerel zaman: ' . date('n/j/Y g:i a') . "\n");
fclose($conn);
}
fclose($socket);
}
?>

Aşağıdaki örnekte, stream_socket_client() işleviyle ilgili örneklerden birinde yapılan bir zaman sorgusuna bir zaman sunucusunun yanıt vermesi için neler yapıldığı gösterilmiştir.

Bilginize: Çoğu sistem, 1024'ten küçük portları oluşturmak için root yetkisine ihtiyaç duyar.

Örnek 2 - UDP sunucu soketlerinin kullanımı

<?php
$socket
= stream_socket_server("udp://127.0.0.1:1113", $errno, $errstr, STREAM_SERVER_BIND);
if (!
$socket) {
die(
"$errstr ($errno)");
}

do {
$pkt = stream_socket_recvfrom($socket, 1, 0, $peer);
echo
"$peer\n";
stream_socket_sendto($socket, date("D M j H:i:s Y\r\n"), 0, $peer);
} while (
$pkt !== false);

?>

Notlar

Bilginize: Bir sayısal IPv6 adresi (fe80::1 gibi) belirtirken port numarasıda belirtmek isterseniz IP adresini köşeli ayraçlar arasına almalısınız. Örnek: tcp://[fe80::1]:80.

Ayrıca Bakınız