(PHP 4, PHP 5, PHP 7)
fsockopen — Bir internet veya Unix alan soketi bağlantısı açar
$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.
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.
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.