# socket_create_listen
* * * * *
说明:
> 在指定的端口上打开类型为AF_INET的资源流套接字,用于接受连接
语法:
~~~
resource socket_create_listen ( int $port [, int $backlog = 128 ] )
~~~
参数:
| 参数 | 描述 |
| --- | --- |
| port | 需要在哪个端口创建,没有指定端口号,或者为0,则随机选择一个端口号,端口号必须为1 - 65535的有效端口号|
| backlog | 设置该socket可接受连接的最大数|
返回值:
| 成功 | 失败 |
| --- | --- |
| 返回一个socket套接字资源 (resource数据类型) | false |
返回失败,错误代码会传入 socket_last_error() ,如果将此参数传入 socket_strerror() 则可以得到错误的文字说明。
技术细节:
PHP版本:PHP 4 >= 4.1.0, PHP 5, PHP 7
实例:
服务端代码 server.php
~~~
// 在5520端口上打开资源流套接字,用于接受连接
$sock = socket_create_listen(5520);
//根据$sock 获取 主机地址 和 端口
socket_getsockname($sock, $addr, $port);
print "Server Listening on $addr:$port\n";
//循环 判断是否有连接
while ($new_socket = socket_accept($sock)) {
// 获取客户端连接的 地址 和 端口
socket_getpeername($new_socket, $raddr, $rport);
print "Received Connection from $raddr:$rport\n";
}
//工作完毕,关闭套接流
socket_close($sock);
~~~
客户端代码 client.php
~~~
//创建一个socket套接流
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
//连接上面服务端的套接流
socket_connect($socket, '127.0.0.1', 5520);
//工作完毕,关闭套接流
socket_close($socket);
~~~
打开windows的cmd窗口,然后,运行php server.php
再打开另外一个cmd窗口 ,然后,运行php client.php
服务端信息:
![](https://box.kancloud.cn/a6ddaaeb934080efafc3ba6413710973_354x59.png)
注:
1、windows中需要把 php这个运行命名 加入环境变量中
2、需要在php.ini 开启extension=sockets 模块
资料来源:
http://php.net/manual/zh/function.socket-create-listen.php
backlog参数详解:https://www.jianshu.com/p/e6f2036621f4
- 前言
- 函数参考
- Socket 函数
- socket_accept
- socket_bind
- socket_clear_error
- socket_close
- socket_connect
- socket_create_listen
- socket_create_pair
- socket_create
- socket_getpeername
- socket_getsockname
- socket_last_error
- socket_listen
- socket_read
- socket_recv
- socket_select
- socket_send
- socket_set_block
- socket_set_nonblock
- SplQueue
- 魔术方法
- 魔术常量
- 杂项
- backlog的用处
- new self()和new static()的区别
- PHP变量的生命周期
- PHP抽象类
- 对象接口
- PHP中的常用关键字
- 常量
- 内存泄露
- global 与 $GLOBAL
- 简单说明CGI和动态请求是什么
- 设计模式
- 单例模式
- 工厂模式
- 适配器模式
- 策略模式
- 观察者模式
- 控制反转IoC简介
- session
- use_trans_sid
- auto_start
- session_id
- cookie_secure
- 面试
- 数据库相关
- 语句相关
- 索引相关
- 字段相关
- PHP相关
- 字符串相关
- 函数相关
- 运算符优先级相关
- 错误相关
- redis相关
- 10个常见的Redis面试"刁难"问题
- mysql
- MySQL中的锁
- MySQL存储引擎MyISAM 和 InnoDB的区别
- MySQL半同步复制
- explain 命令详解
- 索引
- 数据库事务
- MySQL和B树的那些事
- git
- github----向开源框架提交pr的过程
- 推荐博客
- linux
- 命令
- free
- 高并发
- 抢购/秒杀功能
- 算法
- 一致性Hash算法