推薦(免費):swoole
1. 安裝
目前官方推薦兩種方式
1).使用pecl的方式安裝
pecl install swoole
2).使用源碼安裝,推薦下載releases版本的swoole,最好不要從github主干上拉取代碼編譯,直接下載tar包。
swoole包下載地址
然后進行編譯安裝
wget https://github.com/swoole/swoole-src/archive/v2.0.7.tar.gz tar -zxf v2.0.7.tar.gz cd swoole-src-2.0.7/ phpize //如果執(zhí)行這個命令沒有任何顯示的話,使用apt-get install php7.0-dev安裝包 ./configure make && make install
2. 更改php.ini擴展
修改php.ini配置文件,使用命令 php -i |grep php.ini 查看php.ini位置
增加配置
extension=swoole.so
通過php -m或phpinfo()來查看是否成功加載了swoole
3. 栗子TCP服務器,三次握手
簡單理解Socket
編寫 server.php
//創(chuàng)建Server對象,監(jiān)聽 127.0.0.1:9501端口$serv = new swoole_server("127.0.0.1", 9501); //監(jiān)聽連接進入事件$serv->on('connect', function ($serv, $fd) { echo "Client: Connect.n"; }); //監(jiān)聽數據接收事件$serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, "Server: ".$data); echo "Receive message:$data"; //關閉連接(當然,也可以不關閉,不關閉的話會一直等待接收命令而無法退出) $serv->close($fd); }); //監(jiān)聽連接關閉事件$serv->on('close', function ($serv, $fd) { echo "Client: Close.n"; }); //啟動服務器$serv->start();
4. 啟動服務
php server.php
啟動后,光標即停止在這里,等待其他用戶連接。
5. 查看連接
使用命令 netstat -an | grep 端口 來查看端口是否處于 Listening狀態(tài)
netstat -an | grep 9501
(PS: 注意服務器所使用的IP地址,如果是127.0.0.1回環(huán)地址,則客戶端只能使用127.0.0.1才能連接上)
6. 測試TCP服務器
新開窗口使用 telnet 連接服務器
telnet 127.0.0.1 9501
此時,觀察啟動服務的機器,會發(fā)現有返回數據
php server.php > Client:Connect.
在返回客戶端,輸入hellp world,發(fā)現寫入和讀取成功
root@iZ28evegw6zZ:~# telnet 127.0.0.1 9501 Trying 127.0.0.1... Connected to 127.0.0.1. Escape character is '^]'. hellp world //此處是輸入的命令 Server:hellp world //recv()讀取命令成功 Connection closed by foreign host. //退出成功 返回到服務器端觀察 root@iZ28evegw6zZ:/var/www/html# php server.php Client: Connect. //連接成功消息 Receive message: hellp world //接收到數據 Client:Close. //客戶端退出成功
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END