fsockopen

(PHP 4, PHP 5, PHP 7)

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

Açıklama

fsockopen ( string $konakadı [, int $port = -1 [, int &$hatanum [, string &$hata_iletisi [, float $zaman_aşımı = ini_get("default_socket_timeout") ]]]] ) : resource

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.

Değiştirgeler

konakadı

Derleme sırasında OpenSSL desteği vermişseniz, 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ı.

hatanum

Bir değiştirge sağlanmışsa, sistem seviyesi connect() çağrısında oluşan sistem seviyesi hata numarası bu değiştirgeye yerleştirilir.

Eğer işlev FALSE değeriyle dönmüş ve hatanum değiştirgesinde 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ı.

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ı değiştirgesi 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
4.3.0 Win32 için zaman_aşımı değiştirgesi eklendi.
4.3.0 TCP/IP üzerinden SSL ve TLS desteği eklendi.
4.0.0 UDP desteği eklendi.

Örnekler

Örnek 1 - fsockopen() örneği

<?php
$fp 
fsockopen("mesela.dom"80$errno$errstr30);
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($fp128);
    }
    
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($fp26);
    
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

  • pfsockopen() - Kalıcı bir internet veya Unix alan soketi bağlantısı açar
  • stream_set_blocking() - Akımın engelleme kipini ayarlar
  • stream_set_timeout() - Akımın zaman aşımı süresini ayarlar
  • fgets() - Dosya tanıtıcısından bir satır döndürür
  • fgetss() - Dosya tanıtıcısından bir satırı HTML etiketlerinden arındırarak döndürür
  • fwrite() - Dosyaya ikil kipte yazar
  • fclose() - Açık bir dosya tanıtıcısını kapatır
  • feof() - Bir dosya tanıtıcısı üzerinde konum dosya sonunda mı diye bakar
  • Curl eklentisi