socket_get_option

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

socket_get_optionSoketle ilgili bir seçeneğin değerini döndürür

Açıklama

socket_get_option(Socket $soket, int $seviye, int $seçenek): array|int|false

Belirtilen soket için ismi seçenek ile belirtilen seçeneğin değerini döndürür.

Değiştirgeler

soket

socket_create() ile oluşturulmuş geçerli bir Socket nesnesi.

seviye

Seçeneğin geçerli olacağı protokol seviyesi. Örneğin soket seviyesindeki seçenekleri almak için bu değiştirgede SOL_SOCKET kullanılabilirdi. TCP gibi diğer seviyeler, seviyenin protokol numarası belirtilerek kullanılabilir. Protokol numaralarını getprotobyname() işleviyle alabilirsiniz.

seçenek
Olası soket seçenekleri
Seçenek Açıklama Türü
SO_DEBUG Hata ayıklama bilgilerinin kaydelip kaydedilmeyeceğini belirtir. int
SO_BROADCAST Yayın iletilerinin aktarılılp aktarılmayacağını belirtir. int
SO_REUSEADDR Yerel adresin yeniden kullanılabilir olup olmadığını belirtir. int
SO_REUSEPORT Yerel portların yeniden kullanılabilir olduğunu belirtir. int
SO_KEEPALIVE Belirli aralıklarla ileti aktarımlarında bağlantının kalıcı olup olmayacağını belirtir. Eğer bağlı soket bu iletileri yanıtlamakta başarısız olursa bağlantı kopar ve sokete yazan sürece bir SIGPIPE sinyali gönderilir. int
SO_LINGER

Veri mevcut olduğunda socket_close() işlevinin bekletilip bekletilmeyeceğini belirtir. Öntanımlı olarak soket kapatılacağı zaman gönderilmemiş tüm veri gönderilmeye çalışılır. Soketin bağlantı yönelimli olduğu durumda socket_close() karşı ucun alındısını bekler.

Eğer l_onoff sıfırdan farklı ve l_linger sıfırsa gönderilmemiş tüm veri iptal edilir ve soketin bağlantı yönelimli olması durumunda karşı uca bir RST (sıfırla) gönderilir.

Diğer taraftan, l_onoff ve l_linger'in ikisi de sıfırdan farklıysa tüm veri gönderilinceye veya l_linger ile belirtilen süre dolana kadar socket_close() bekletilir. Soket engellenmeyen kipte ise socket_close() başarısız olup bir hata döndürür.

array. Dizi iki anahtar içerir: l_onoff ve l_linger.
SO_OOBINLINE Soketin band dışı veriyi hatta bırakıp bırakmayacağını belirtir. int
SO_SNDBUF Gönderim tamponunun boyunu belirtir. int
SO_RCVBUF Alım tamponunun boyunu belirtir. int
SO_ERROR Hata durumu hakkında bilgi verip hata kodunu siler. int (socket_set_option() ile atanamayabilir.)
SO_TYPE Soketin türünü belirtir (SOCK_STREAM gibi). int (socket_set_option() ile atanamayabilir.)
SO_DONTROUTE Giden iletilerin standart yönlendirme oluşumlarını es geçip geçmeyeceğini belirtir. int
SO_RCVLOWAT Soket girdi işlemlerinde işlenecek en küçük bayt sayısını belirtir. int
SO_RCVTIMEO Soket girdi işlemleri için zaman aşımı değerini belirtir. array. Dizi iki anahtar içerir: Zaman aşımının saniye parçası sec, mikrosaniye parçası usec anahtarına konur.
SO_SNDTIMEO Akış denetiminin veri gönderimini engellemesi nedeniyle bir çıktı işlevinin bekletileceği azami süreyi belirtir. array. Dizi iki anahtar içerir: Zaman aşımının saniye parçası sec, mikrosaniye parçası usec anahtarına konur.
SO_SNDLOWAT Soket çıktı işlemlerinde işlenecek en küçük bayt sayısını belirtir. int
TCP_NODELAY Nagle TCP algoritmasının iptal edilmiş olup olmadığını belirtir. int
MCAST_JOIN_GROUP Çok noktaya yayın grubuna katılır. array. IPv4 veya IPv6 çok noktaya yayın adresi içeren "group" anahtarlı ve "eth0" gibi arabirim adını veya int türünde bir arabirim numarası (arabirimin yönlendirme kuralları kullanılarak seçilmesi gerektiğini belirtmek için 0 belirtilebilir) içeren "interface" anahtarlı bir dizi Sadece socket_set_option() işlevinde kullanılabilir.
MCAST_LEAVE_GROUP Çok noktaya yayın grubunu terkeder. array. Daha fazla bilgi için bkz: MCAST_JOIN_GROUP Sadece socket_set_option() işlevinde kullanılabilir.
MCAST_BLOCK_SOURCE Evvelce bağlanılmış olması gereken belli bir çok noktaya yayın grubuna belli bir kaynaktan gelen paketleri engeller. array. MCAST_JOIN_GROUP seçeneğindeki anahtarlara ek olarak source anahtarına da sahip bir dizi. source anahtarı, engellenen IPv4 veya IPv6 kaynak adresini belirten bir dizge içerir. Sadece socket_set_option() işlevinde kullanılabilir.
MCAST_UNBLOCK_SOURCE Evvelce bağlanılmış olması gereken belli bir çok noktaya yayın grubuna belli bir kaynaktan gelen paketlerin engellemesini kaldırır (yeniden almaya başlar). array. MCAST_BLOCK_SOURCE ile aynı biçemde bir dizi. Sadece socket_set_option() işlevinde kullanılabilir.
MCAST_JOIN_SOURCE_GROUP Kaynak adresi belli bir değerle eşleşen belli bir çok noktaya yayın grubunu hedefleyen paketleri alır. array. MCAST_BLOCK_SOURCE ile aynı biçemde bir dizi. Sadece socket_set_option() işlevinde kullanılabilir.
MCAST_LEAVE_SOURCE_GROUP Kaynak adresi belli bir değerle eşleşen belli bir çok noktaya yayın grubunu hedefleyen paketlerin alımını durdurur. array. MCAST_BLOCK_SOURCE ile aynı biçemde bir dizi. Sadece socket_set_option() işlevinde kullanılabilir.
IP_MULTICAST_IF IPv4 çok noktaya yayın giden paketleri için arabirim. int veya string. Arabirim numarasını içeren int türünde bir değer veya eth0 gibi arabirim adını içeren string türünde bir değer. Arabirim seçiminde yönlendirme tablosunun kullanılacağını ifade etmek için 0 değeri belirtilebilir. socket_get_option() işlevi bir arabirim indisi döndürür. C API'sinin tersine bu seçenek bir IP adresi almaz. Bu, IP_MULTICAST_IF ile IPV6_MULTICAST_IF arasındaki farkın yoksayılmasını sağlar.
IPV6_MULTICAST_IF IPv6 çok noktaya yayın giden paketleri için arabirim. int veya string. IP_MULTICAST_IF ile aynı.
IP_MULTICAST_LOOP Bu soket tarafından kullanılan arabirimden gönderilen çok noktaya yayın paketlerinin, aynı konaktaki aynı çok noktaya yayın grubuna katılan alıcılara da ulaşıp ulaşmayacağını belirleyen, IPv4 paketleri için çok noktaya yayın geri-döngü ilkesi. Bu öntanımlı durumdur. int. (0 ya da 1). socket_set_option() işlevi için kabul edilebilir veya uygun PHP kurallarıyla mantıksal bir değere dönüştürülebilir herhangi bir değer.
IPV6_MULTICAST_LOOP IPv6 için olması dışında IP_MULTICAST_LOOP ile benzer. int. Bkz: IP_MULTICAST_LOOP.
IP_MULTICAST_TTL Giden IPv4 çok noktaya yayın paketleri için yaşam süresi. 0 (arabirimi bırakma) ile 255 arasında bir değer. Öntanımlı değer 1'dir (sadece yerel ağa ulaşılır). int. 0 ile 255 arası bir tamsayı.
IPV6_MULTICAST_HOPS IPv6 için olması dışında IP_MULTICAST_TTL ile benzer. Ayrıca, öntanımlı yol kullanılacak anlamında -1 de kabul edilir. int. -1 ile 255 arası bir tamsayı.

Dönen Değerler

Hata durumunda false yoksa belirtilen seçeneğin değerini döndürür.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0soket artık bir Socket örneği olabiliyor; evvelce resource türündeydi.

Örnekler

Örnek 1 - socket_get_option() örneği

<?php
$socket 
socket_create_listen(1223);

$linger = array('l_linger' => 1'l_onoff' => 1);
socket_set_option($socketSOL_SOCKETSO_LINGER$linger);

var_dump(socket_get_option($socketSOL_SOCKETSO_REUSEADDR));
?>

Ayrıca Bakınız

add a note add a note

User Contributed Notes 3 notes

up
3
recycling dot sp dot am at gmail dot com
13 years ago
Just 2 notes here:
- On UNIX, If SO_DEBUG is set, the php program needs an effective user id of 0.
-  activating SO_OOBINLINE on a socket is equivalent to passing MSG_OOB flag to each recieving functions used with that socket (eg: socket_recv, socket_recvfrom).
up
4
Chad Lavoie
13 years ago
If using Unix Sockets, and you want to use SO_PEERCRED, you can use the number 17 for the optname (and SOL_SOCKET for the level).  The PID of the connecting process will be returned.
up
1
prennings at gmail dot com
10 years ago
I was playing around with this option to use multiply socket connections with same hostname and same port (IRC). However the socket function needed for this is SO_REUSEPORT.

Though the majority of linux distro's does not have that yet officially implented in there distro's.

However for debian there is an patch that can be installed to get it working:

https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=c617f398edd4db2b8567a28e899a88f8f574798d

it has some work but I got it working after a while (Noobie in debian) maybe some other people are facing the same problem as I was.
To Top