### 服務端
~~~
// 創建一個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有用命令
- 內存