CakeFest 2024: The Official CakePHP Conference

socket_create_listen

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

socket_create_listenBağlantı kabul etmek için port üzerinde bir soket açar

Açıklama

socket_create_listen(int $port, int $kuyruk = 128): Socket|false

socket_create_listen() işlevi, yeni bağlantıları beklemek için belirtilen port üzerindeki tüm arabilirimleri dinleyen AF_INET türünde yeni bir Socket örneği oluşturur.

Bu işlev yeni bağlantı kabul etmek için sadece dinleme yapacak yeni bir soket oluşturmayı kolaylaştırmak için tasarlanmıştır.

Bağımsız Değişkenler

port

Tüm arabirimlerde dinlenecek port.

backlog

İşlem için kuyruğa alınacak azami gelen bağlantı sayısı. Bu bağımsız değişkene SOMAXCONN atanabilir. Daha fazla bilgi için socket_listen() işlevine bakınız.

Dönen Değerler

Hata durumunda false, yoksa yeni bir Socket nesnesi döner. Hata kodu socket_last_error() işlevi ile alınabilir. Bu hata kodunu socket_strerror() işlevine aktararak hatayı açıklayan dizgeyi alabilirsiniz.

Sürüm Bilgisi

Sürüm: Açıklama
8.0.0 Başarı durumunda artık bir Socket nesnesi dönüyor; evvelce resource türünde bir değer dönerdi.

Notlar

Bilginize:

Sadece belli bir arabirimi dinleyecek bir soket oluşturmak isterseniz socket_create(), socket_bind() ve socket_listen() işlevlerini kullanın.

Ayrıca Bakınız

add a note

User Contributed Notes 4 notes

up
10
jdittmer at ppp0 dot net
19 years ago
If you specify no port number, or 0, a random free port will be chosen.
To use ports for ipc between client/server on the same machine you can use (minus error checking)

server.php:
<?php
$sock
= socket_create_listen(0);
socket_getsockname($sock, $addr, $port);
print
"Server Listening on $addr:$port\n";
$fp = fopen($port_file, 'w');
fwrite($fp, $port);
fclose($fp);
while(
$c = socket_accept($sock)) {
/* do something useful */
socket_getpeername($c, $raddr, $rport);
print
"Received Connection from $raddr:$rport\n";
}
socket_close($sock);
?>

client.php:
<?php
$fp
= fopen($port_file, 'r');
$port = fgets($fp, 1024);
fclose($fp);
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock, '127.0.0.1', $port);
socket_close($sock);
?>
up
4
sysspoof at ng-lab dot org
16 years ago
Please note that port 1 to and with 1024 on linux and bsd system require root privileges. So it is recommended to choose a higher port for your own application.
up
2
basim at baassiri dot com
20 years ago
Remember that ports are only valid from 1 - 65535

[editor's note: typo fixed, thanks abryant at apple dot com]
up
-15
aeolianmeson at ifacfchi dot blitzeclipse dot com
15 years ago
I believe that on some systems this may not bind to some or all public interfaces.

On my Windows system, I could not connect on the public interface using this, but could when I made the individual calls to create, bind, and listen.

Dustin Oprea
To Top