### 服务端
~~~
// 创建一个socket对象
$sk = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 设置socket允许重用本地地址和端口
socket_set_option($sk, SOL_SOCKET, SO_REUSEADDR, 1);
// 绑定ip和端口
socket_bind($sk, '0.0.0.0', 9090);
// 监听socket服务
socket_listen($sk, 5);
echo "waiting\n";
// 接受客户端连接并返回客户端socket对象,执行这里程序会阻塞
$clientSocket = socket_accept($sk);
// 接受客户端发过来的数据
$data = socket_read($clientSocket, 1024);
// 客户端发过来的数据
var_dump($data);
// 要发送的数据
$msg = 'hello client: '.date('Y‐m‐d H:i:s');
// 发送给客户端数据
socket_write($clientSocket,$msg);
// 关闭socket
socket_close($clientSocket);
socket_close($sk);
~~~
### 客户端
~~~
// 创建一个客户端socket对象
$clientSocket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
/**
* 连接到服务器端的socket服务和端
* IP地址
* 端口号
*/
socket_connect($clientSocket,'127.0.0.1',9090);
// 要发送的数据
$msg = 'hello server: '.date('Y‐m‐d H:i:s');
// 客户端向服务器端发送数据
socket_write($clientSocket,$msg);
// 获取服务器端的数据
$buf = socket_read($clientSocket,8192);
// 输出
var_dump($buf);
// 关闭
socket_close($clientSocket);
~~~
### 让服务端不退出
~~~
// 创建一个socket对象
$sk = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// 设置socket允许重用本地地址和端口
socket_set_option($sk, SOL_SOCKET, SO_REUSEADDR, 1);
// 绑定ip和端口
socket_bind($sk, '0.0.0.0', 9090);
// 监听socket服务
socket_listen($sk, 5);
echo "waiting\n";
// 让服务端不退出
while(true){
// 接受客户端连接并返回客户端socket对象,执行这里程序会阻塞
$clientSocket = socket_accept($sk);
// 接受客户端发过来的数据
$data = socket_read($clientSocket, 1024);
// 获取IP地址和端口号
socket_getpeername($clientSocket,$addr,$port);
// 客户端发过来的数据
var_dump($data);
// 要发送的数据
$msg = 'hello '.$addr.' client: '.date('Y‐m‐d H:i:s');
// 发送给客户端数据
socket_write($clientSocket,$msg);
// 关闭socket
socket_close($clientSocket);
} s
ocket_close($sk);
~~~
- PHP加密技术
- md5加密
- Crypt加密
- 函数
- 概述
- 强类型参数
- 可变参数列表
- 值传递&引用传递
- 变量作用域
- 可变函数
- 嵌套函数
- 递归函数
- 匿名函数(闭包)
- 面向对象
- 概念
- 类
- 对象的传值
- 对象的克隆
- 构造方法
- 析构方法
- 克隆方法
- $this
- 类常量
- 静态属性
- 静态方法
- 继承
- 重写
- 重载
- 概述
- 属性重载
- 概述
- __set()
- __get()
- __unset()
- __isset()
- 方法重载
- 概述
- __call()
- __callstatic()
- 封装
- 最终类
- 抽象类
- 接口
- 对象的序列化与反序列化
- __sleep()
- __wakeup()
- 其他魔术方法
- 对象的遍历
- 类和对象相关函数
- 错误
- 概述
- 设置错误级别
- trigger_error()触发错误
- 处理PHP中的错误
- 异常
- 概述
- 自定义异常类
- 自定义文件写入异常类
- 记录和发送异常信息
- 使用观察者模式处理异常信息
- 自定义异常处理器
- 设计模式
- 创建型
- 单例模式
- 工厂模式
- 原型模式
- 结构型
- 注册树模式
- 适配器模式
- 数据映射模式
- 装饰器模式
- 代理模式
- 行为型
- 策略模式
- 观察者模式
- 迭代器模式
- 网络
- cURL
- Oauth2.0
- QQ第三方登录
- TCP/IP协议
- 概述
- HTTP协议
- 概述
- HTTP请求协议
- HTTP响应协议
- WebSocket
- 安装扩展
- Redis
- Socket
- 计算机通信
- socket简介
- PHP操作socket
- TCP
- HTTP服务端
- WebSocket
- PHP7
- 生成器yield
- 异常finally
- CGI和FPM
- php有用命令
- 内存