推薦 swoole ide:https://github.com/eaglewu/swoole-ide-helper 下載放在項目目錄php
Swoole 在IDE下自動識別類、函數、宏,自動補全函數名git
Swoole 結構,便於開發過程當中查看文檔,以及屏蔽IDE undefined 提示,便於快速查看函數用法。github
Swoole releases 版本下載地址:https://github.com/swoole/swoole-src/releases編程
API 手冊在線預覽:Swoole API Manualapi
開發Swoole項目同時,在IDE中打開/導入本文件便可。服務器
使用 IDE自帶 Include Path
功能引入 helper 目錄swoole
PHPstorm使用演示(其餘IDE同理):網絡
我的特別喜歡 swoole 編程,感受好強大異步
不說了直接上代碼試試效果:tcp
TCP服務器端
server.php
<?php /** * User: wangjie404 * Date: 2016/7/26 * Time: 14:19 * TCP Server */ //0.0.0.0表示監聽全部地址,9501表示端口 $server = new swoole_server('0.0.0.0',9501); //開始事件函數回調的設定 ,創建鏈接 $server->on("connect",function(swoole_server $ser,$fd,$from_id){ echo "Connected"; $ser->send($fd,"hello\n"); }); // 接收數據 $data 發來的數據 $server->on("receive",function(swoole_server $ser,$fd,$from_id,$data){ //接收客戶端數據 echo "received:".$data; /** *發送數據到客戶端 *發送的數據。TCP協議最大不得超過2M,UDP協議不得超過64K *發送成功會返回true,若是鏈接已被關閉或發送失敗會返回false */ // $ser->send($fd,'Server:hello');
$ser->send($fd,'Server:吃了\n'); }); // 關閉連接 $server->on("close",function($ser,$fd,$from_id){ echo "close"; }); $server->start();
?>
進入你的文件所在目錄 運行 php server.php
打開一個新的窗口 輸入 telnet 你的ip 端口 輸入內容 查看 服務器響應的消息
備註:一個server 是能夠接受多個連接 的具體本身操做了。
2.本機迴環(127.0.0.1),局域網通訊,外網通訊3種方式的差別
本機迴環127.0.0.1 | 內存 | 等於進程間的通訊 | 延遲微妙級別 |
局域網 192.168.11.1 | 網卡-交換機 | 千兆 or 萬兆網絡 | 0.2-1ms左右 |
外網 14.18.203.64 | 網卡-路由器-英特網 | 非公網IP不可用 | 10-100ms |
3.數據包從操做系統到網卡、交換機、路由器、互聯網,再到客戶端的網絡環境,到用戶主機操做系統,最後到客戶端程序
下面 來介紹一下 TCP/IP協議4層
1.鏈路層:交換機從主機到網線到交換機到路由器
2.網絡層:從網關到外面 ,各個路由器之間的轉發
3.傳輸層: 主要有tcp/udp udp爲比較原始的傳輸方式
4.應用層:協議 就是咱們的http ,smtp 等
4.路由協議 :
路由器之間交換信息,BGP
網關就是出口路由器 如 192.168.1.1
網絡段,主機段 192.168.1.100
掩碼:255.255.255.0
廣播 :192.168.1.255
DNS:應用層概念用於將域名解析爲ip,UDP
########################################################
下面 介紹 tcp_client 就不用經過 telnet 方式鏈接了
直接上代碼:
<?php
/**
* User: Administrator
* Date: 2016/7/26
* Time: 15:55
*/
//經過tcp 方式,異步
$client = new swoole_client(SWOOLE_SOCK_TCP,SWOOLE_SOCK_ASYNC);
//@param $event_name
//@param $callback_function
//打開鏈接
$client->on("connect",function($cli){
echo "client connected.\n";
});
//關閉連接
$client->on("close",function($cli){
echo "client close.\n";
});
//錯誤信息(必須 否則會報錯)
$client->on("error",function($cli){
echo "error.\n";
});
//接收服務器信息
$client->on("receive",function($cli,$data){
echo "received:$data\n";
// 每隔3秒向服務器發送消息
sleep(3);
$cli->send('吃飯了麼?');
});
//下面是我虛擬機的IP
$client->connect('192.168.11.91',9501);
運行php server.php
運行php client.php
哈哈!有啥問題 能夠回覆解決額;你們能夠一塊兒交流討論;