(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create_pair — Ayrılması olanaksız bir soket çifti oluşturur ve bunları bir dizide saklar
socket_create_pair() iki tane bağlı ve ayrılması olanaksız soket oluşturur ve bunları çift
dizisine yerleştirir. Bu işlev genellikle süreçler arası iletişim için kullanılır.
aile
Soket tarafından kullanılacak protokol ailesi. Tam liste için socket_create() işlevine bakın.
tür
Soket tarafından kullanılacak iletişimin türü. Tam liste için socket_create() işlevine bakın.
protokol
Soketten dönen iletişimi kullanacak aileye özgü protokol. Bu değer protol ismi belirtilerek getprotobyname() ile alınabilir. İstenen protokol bir TCP veya UDP protokolü ise SOL_TCP
veya SOL_UDP
sabiti değer olarak kullanılabilir.
Desteklenen protokollerin listesi için socket_create() işlevine bakın.
çift
İki Socket örneğinin yerleştirileceği dizi.
Sürüm: | Açıklama |
---|---|
8.0.0 | çift dizisine artık Socket örnekleri yerleştiriliyor; evvelce dizi elemanları resource türünde olabiliyordu. |
Örnek 1 - socket_create_pair() örneği
<?php
$sockets = array();
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
if (socket_create_pair($domain, SOCK_STREAM, 0, $sockets) === false)
{
echo "socket_create_pair başarısız oldu. Sebep: ".
socket_strerror(socket_last_error());
}
if (socket_write($sockets[0], "ABCdnm123\n", strlen("ABCdnm123\n")) === false)
{
echo "socket_write() başarısız oldu. Sebep: ".
socket_strerror(socket_last_error($sockets[0]));
}
if (($data = socket_read($sockets[1], strlen("ABCdef123\n"),
PHP_BINARY_READ)) === false)
{
echo "socket_read() başarısız oldu. Sebep: ".
socket_strerror(socket_last_error($sockets[1]));
}
var_dump($data);
socket_close($sockets[0]);
socket_close($sockets[1]);
?>
Örnek 2 -socket_create_pair() IPC örneği
<?php
$ary = array();
$dizgebir = 'Ebeveynin iletisi.';
$dizgeiki = 'Çocuğun iletisi.';
if (socket_create_pair(AF_UNIX, SOCK_STREAM, 0, $ary) === false)
{
echo "socket_create_pair() başarısız oldu. Sebep: ".
socket_strerror(socket_last_error());
}
$pid = pcntl_fork();
if ($pid == -1)
{
echo 'Süreç çatallanamadı.';
}
elseif ($pid)
{
socket_close($ary[0]);
if (socket_write($ary[1], $dizgebir, strlen($dizgebir)) === false)
{
echo "socket_write() başarısız oldu. Sebep: ".
socket_strerror(socket_last_error($ary[1]));
}
if (socket_read($ary[1], strlen($dizgeiki), PHP_BINARY_READ) == $dizgeiki)
{
echo "$dizgeiki alındı\n";
}
socket_close($ary[1]);
}
else
{
socket_close($ary[1]);
if (socket_write($ary[0], $dizgeiki, strlen($dizgeiki)) === false)
{
echo "socket_write() başarısız oldu. Sebep: ".
socket_strerror(socket_last_error($ary[0]));
}
if (socket_read($ary[0], strlen($dizgebir), PHP_BINARY_READ) == $dizgebir)
{
echo "$dizgebir alındı\n";
}
socket_close($ary[0]);
}
?>