(PHP 4 >= 4.1.0, PHP 5)
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ı dt dizisine yerleştirir. Bu işlev genellikle süreçler arası iletişim için kullanılır.
Soket tarafından kullanılacak protokol ailesi. Tam liste için socket_create() işlevine bakın.
Soket tarafından kullanılacak iletişimin türü. Tam liste için socket_create() işlevine bakın.
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.
Soket çiftinin yerleştirileceği gönderimli dizi.
Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.
Sürüm: | Açıklama |
---|---|
5.3.0 | İşlev Windows platformlarında yeniden kullanılabilir oldu. |
4.3.0 | İşlev bir hatadan dolayı Windows platformlarında kullanılamaz oldu. |
Örnek 1 - socket_create_pair() örneği
<?php
$sockets = array();
/* Windows'ta AF_INET kullanmamız lazım */
$domain = (strtoupper(substr(PHP_OS, 0, 3)) == 'WIN' ? AF_INET : AF_UNIX);
/* Soket çiftini alalım */
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());
}
/* Veri gönderip alalım */
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);
/* Soketleri kapatalım */
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)
{
/* ebeveyn */
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
{
/* çocuk */
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]);
}
?>