fsockopen

(PHP 4, PHP 5, PHP 7, PHP 8)

fsockopenBir internet veya Unix alan soketi bağlantısı açar

Açıklama

fsockopen(
    string$konakadı,
    int$port = -1,
    int&$hata_kodu = null,
    string&$hata_iletisi = null,
    ?float$zaman_aşımı = null
): resource|false

konakadı ile belirtilen kaynağa bir soket bağlantısı başlatır.

PHP, Desteklenen Soket Aktarımlarının Listesi bölümünde açıklanan internet ve Unix alanlarını destekler. Desteklenen aktarımların bir listesi ayrıca, stream_get_transports() işlevi kullanılarak da alınabilir.

Soket öntanımlı olarak engellenen kipte açılır. Engellenmeyen kipe geçmek için stream_set_blocking() işlevini kullanabilirsiniz.

Bu işlevin benzeri olan stream_socket_client() işlevi engellenmeyen bağlantı ve bir akım bağlamı sağlama yeteneği dahil, daha zengin bir seçenek kümesi sağlar.

Bağımsız Değişkenler

konakadı

Derleme sırasında OpenSSL desteği verilmişse, uzak konağa TCP/IP üzerinden bir SSL veya TLS istemci bağlantısı açmak için konakadı belirtirken ssl:// veya tls:// önekini kullanabilirsiniz.

port

Port numarası. unix:// gibi portları kullanmayan aktarımlar için, bu bağımsız değişkene -1 atanabilir veya bu bağımsız değişken atlanabilir.

hata_kodu

Bir bağımsız değişken sağlanmışsa, sistem seviyesi connect() çağrısında oluşan sistem seviyesi hata numarası bu bağımsız değişkene yerleştirilir.

Eğer işlev false değeriyle dönmüş ve hata_kodu bağımsız değişkeninde 0 değeri varsa, connect() çağrısı öncesinde bir hata oluşmuş demektir. Bu sorun genellikle soketin ilklendirilmesi ile ilgilidir.

hata_iletisi

Bir dizge olarak hata iletisi.

zaman_aşımı

Saniye cinsinden bağlantı zaman aşımı. null belirtilirse, default_socket_timeoutphp.ini yönergesinin değeri kullanılır.

Bilginize:

Verinin sokete yazılması/okunması ile ilgili bir zaman aşımını sadece bağlandığınız soket için belirtmek isterseniz, zaman_aşımı bağımsız değişkeni olarak stream_set_timeout() işlevini kullanın.

Dönen Değerler

fsockopen(), diğer dosya işlevleriyle (fgets(), fgetss(), fwrite(), fclose() ve feof() gibi) kullanmak üzere bir dosya tanıtıcısı ile döner. Eğer çağrı başarısız olursa false döner.

Hatalar/İstisnalar

konakadı geçerli bir alan adı değilse bir E_WARNING çıktılanır.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0zaman_aşımı artık null olabiliyor.

Örnekler

Örnek 1 - fsockopen() örneği

<?php
$fp
= fsockopen("mesela.dom", 80, $errno, $errstr, 30);
if (!
$fp) {
echo
"$errstr ($errno)<br />\n";
} else {
$out = "GET / HTTP/1.1\r\n";
$out .= "Host: mesela.dom\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
while (!
feof($fp)) {
echo
fgets($fp, 128);
}
fclose($fp);
}
?>

Örnek 2 - UDP bağlantısı kullanımı

Aşağıdaki örnekte, makinenizdeki "daytime" (port 13) UDP hizmetini kullanarak tarih ve saati nasıl elde edeceğiniz gösterilmiştir:

<?php
$fp
= fsockopen("udp://127.0.0.1", 13, $errno, $errstr);
if (!
$fp) {
echo
"HATA: $errno - $errstr<br />\n";
} else {
fwrite($fp, "\n");
echo
fread($fp, 26);
fclose($fp);
}
?>

Notlar

Bilginize:

Platforma bağlı olarak Unix alanı veya isteğe bağlı bağlantı zaman aşımı kullanılamayabilir.

Uyarı

Uzak konak erişilebilir olmasa bile UDP soketler bazen hatasız açılmış gibi görünebilir. Hata sadece sokete okuma/yazma sırasında kendini gösterir. Bunun sebebi UDP'nin "bağlantısız" bir protokol olmasıdır. Yani, işletim sistemi gerçekten veri alana veya gönderene kadar sokete bir hat tahsis etmez.

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

To Top