<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## **一,TCP服務器創建** ~~~ <?php namespace server; /** * 概要描述:TCP服務器 */ class TcpServer { protected $serv = null; //Swoole\Server對象 protected $host = '0.0.0.0'; //監聽對應外網的IP 0.0.0.0監聽所有ip protected $port = 9601; //監聽端口號 public function __construct() { $this->serv = new \Swoole\Server($this->host, $this->port); //設置參數 //如果業務代碼是全異步 IO 的,worker_num設置為 CPU 核數的 1-4 倍最合理 //如果業務代碼為同步 IO,worker_num需要根據請求響應時間和系統負載來調整,例如:100-500 //假設每個進程占用 40M 內存,100 個進程就需要占用 4G 內存 $this->serv->set(array( 'worker_num' => 4, //設置啟動的worker進程數。【默認值:CPU 核數】 'max_request' => 10000, //設置每個worker進程的最大任務數。【默認值:0 即不會退出進程】 'daemonize' => 0, //守護進程化【默認值:0】 )); //監聽鏈接進入事件 $this->serv->on('connect', function ($serv, $fd) { echo '鏈接成功'; }); //監聽數據接收事件 $this->serv->on('receive', function ($serv, $fd, $from_id, $data) { var_dump($fd.'--'.$data); /** * 函數:bool Server->send(mixed $fd, string $data, int $serverSocket = -1); * 作用:向客戶端發送數據 * 參數: * $fd,客戶端的文件描述符 * $data,發送的數據,TCP協議最大不得超過2M,可修改 buffer_output_size 改變允許發送的最大包長度 * $serverSocket,向Unix Socket DGRAM對端發送數據時需要此項參數,TCP客戶端不需要填寫 */ $this->serv->send($fd, "服務端向用戶{$fd}發送數據:{$data}"); }); //監聽鏈接關閉事件 $this->serv->on('close', function ($serv, $fd) { echo '關閉鏈接'; }); //啟動服務 $this->serv->start(); } } $tcpServer = new TcpServer(); ~~~ ## **二,運行TCP服務** > **需要用php CLI模式運行** > ![](https://img.kancloud.cn/53/8c/538cc3ba4e5aca118cfb7c376d2d82af_522x35.png) 查看端口PID:lsof -i:9601 ![](https://img.kancloud.cn/6b/6f/6b6fa14dae3b7b4715f4978f14032fd2_534x66.png) 以**樹狀圖**顯示進程間的關系:`pstree -p 進程id` ![](https://img.kancloud.cn/1c/cd/1ccd356181b2c0d9dfa9c0cdf30a6b8b_620x108.png) 說明TCP服務已正常開啟 ## **三,創建TCP客戶端(TP6舉例)** ~~~ <?php // +---------------------------------------------------------------------- // | najing [ 通用后臺管理系統 ] // +---------------------------------------------------------------------- namespace app\admin\controller; use app\BaseController; class TcpClient extends BaseController { public function demo() { // 創建TCP客戶端 $client = new \Swoole\Client(SWOOLE_SOCK_TCP); /** * 函數:bool Client->connect(string $host, int $port, float $timeout = 0.5) * 作用:連接到服務器 * 參數: * $host,遠程服務器的地址 * $port,遠程服務器端口 * $timeout,網絡 IO 的超時時間 */ if (!$client->connect('212.64.29.192', 9601, 0.5)) { die("connect failed."); } //向服務器發送數據 if (!$client->send("hello world")) { echo '發送失敗'; } //從服務器接收數據 $data = $client->recv(); if (!$data) { die("recv failed."); } //打印從服務端接收到的數據 echo $data; //關閉連接 $client->close(); exit(); } } ~~~ ## **三,運行TCP客戶端** 瀏覽器訪問應用地址 ![](https://img.kancloud.cn/3f/92/3f921844265a9d8f6cac98d65ecd62d9_701x192.png) TCP服務端會接收客戶端上傳的數據,并返回信息 ![](https://img.kancloud.cn/c9/95/c995a2f91fcc24007cc7ce495e58de8d_623x127.png) 這樣就完成了簡單的tcp服務器與tcp客戶端的搭建!
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看