(PHP 4, PHP 5)
fsockopen — Bir internet veya Unix alan soketi bağlantısı açar
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.
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 numarası.
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.
Bir dizge olarak hata iletisi.
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.
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.
konakadı geçerli bir alan adı değilse bir E_WARNING çıktılanır.
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. |
Ö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);
}
?>
Bilginize:
Platforma bağlı olarak Unix alanı veya isteğe bağlı bağlantı zaman aşımı kullanılamayabilir.
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.