(PHP 4, PHP 5)
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")
]]]] )
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.