socket_create_listen
(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)
socket_create_listen — Opens a socket on port to accept connections
说明
socket_create_listen() creates a new Socket instance of
type AF_INET
listening on all
local interfaces on the given port waiting for new connections.
This function is meant to ease the task of creating a new socket which only listens to accept new connections.
参数
-
port
-
The port on which to listen on all interfaces.
-
backlog
-
The
backlog
parameter defines the maximum length the queue of pending connections may grow to.SOMAXCONN
may be passed asbacklog
parameter, see socket_listen() for more information.
返回值
socket_create_listen() returns a new Socket instance
on success or false
on error. The error code can be retrieved with
socket_last_error(). This code may be passed to
socket_strerror() to get a textual explanation of the
error.
更新日志
版本 | 说明 |
---|---|
8.0.0 | On success, this function returns a Socket instance now; previously, a resource was returned. |
注释
注意:
If you want to create a socket which only listens on a certain interface you need to use socket_create(), socket_bind() and socket_listen().
参见
- socket_create() - 创建一个套接字(通讯节点)
- socket_create_pair() - Creates a pair of indistinguishable sockets and stores them in an array
- socket_bind() - 给套接字绑定名字
- socket_listen() - Listens for a connection on a socket
- socket_last_error() - Returns the last error on the socket
- socket_strerror() - Return a string describing a socket error

User Contributed Notes 4 notes
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);
?>
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.
Remember that ports are only valid from 1 - 65535
[editor's note: typo fixed, thanks abryant at apple dot com]
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
备份地址:http://www.lvesu.com/blog/php/function.socket-create-listen.php