php socket_create_listen(),socket_create_listen()

socket_create_listen()是PHP中用于创建一个监听套接字的函数,它在所有本地接口上指定端口等待新的连接。此函数简化了仅接收新连接的套接字创建过程。参数包括监听的端口和连接队列最大长度。如果未指定端口,会随机选择一个空闲端口。注意,低于1024的端口可能需要root权限。示例代码展示了如何创建一个监听服务器并接受客户端连接。
摘要由CSDN通过智能技术生成

socket_create_listen()

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

Opens a socket on port to accept connections

说明socket_create_listen(int$port[,int$backlog= 128]):resource

socket_create_listen() creates a new socket resource of type AF_INET listening onalllocal 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.

参数$portThe port on which to listen on all interfaces.$backlogThe$backlogparameter defines the maximum length the queue of pending connections may grow to.SOMAXCONN may be passed as$backlogparameter, see socket_listen() for more information.

返回值

socket_create_listen() returns a new socket resource 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.

注释Note:

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().

参见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:

$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:

$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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值