多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**socket_create_listen** ( int **$port** [, int **$backlog** = 128 ] ) : resource — 创建AF_INET类型的新套接字资源,侦听给定端口上等待新连接的所有本地接口,该函数旨在简化创建仅侦听接受新连接的新套接字的任务 Backlog参数定义挂起连接队列可以增长到的最大长度。 SOMAXCONN可以作为backlog参数传递,有关详细信息,请参阅SOCKET_LISTEN() 成功返回新的套接字资源,错误返回FALSE 如果要创建仅在特定接口上侦听的套接字,则需要使用socket_create()、socket_bind()和socket_listen() 如果您未指定端口号或0,则将选择一个随机的空闲端口,在Linux和bsd系统上,端口1与1024并带有1024端口需要root特权,所以应该为应用程序选择更高的端口,端口仅在1-65535之间有效 ~~~ server.php: <?php $sock = socket_create_listen(0); socket_getsockname($sock, $addr, $port); print "正在监听 $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 "收到来自:{$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); ?> ~~~