<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>

                ## **一,UDP服務器創建** ``` <?php // +---------------------------------------------------------------------- // | najing [ 通用后臺管理系統 ] // +---------------------------------------------------------------------- // | Copyright (c) 2020 http://www.najingquan.com All rights reserved. // +---------------------------------------------------------------------- // | Author: 救火隊隊長 // +---------------------------------------------------------------------- namespace server; /** * 概要描述:UDP服務器 * @author: 救火隊隊長 * @since: 2020-05-23 22:45 */ class UdpServer { protected $serv = null; //Swoole\Server對象 protected $host = '0.0.0.0'; //監聽對應外網的IP 0.0.0.0監聽所有ip protected $port = 9602; //監聽端口號 public function __construct() { $this->serv = new \Swoole\Server($this->host, $this->port, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); //設置參數 //如果業務代碼是全異步 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】 )); //監聽數據接收事件 // 3、設置回調,發生在worker進程中 $this->serv->on('packet', function ($serv, $data, $client_info) { echo "接收到客戶端信息: " . $data . PHP_EOL; var_dump($client_info); // 由于UDP協議不能確保信息送達,所以當服務端收到信息后最好做個應答,這樣客戶端才有依據來做判斷 $this->serv->sendto($client_info['address'], $client_info['port'], "This is server..." . PHP_EOL); }); //啟動服務 $this->serv->start(); } } $udpServer = new UdpServer(); ``` ## **二,運行UDP服務** >[danger] **需要用php CLI模式運行** ![](https://img.kancloud.cn/50/97/5097da7d0b67b0dc546f821194a60e82_469x37.png) **查看進程數:ps aft | grep? /home/server/UdpServer.php** ![](https://img.kancloud.cn/b6/2f/b62f4c9e24174b3af7b667fb89554502_565x126.png) 說明UDP服務已正常開啟 ## **三,創建UDP客戶端(TP6舉例)** ``` <?php // +---------------------------------------------------------------------- // | najing [ 通用后臺管理系統 ] // +---------------------------------------------------------------------- // | Copyright (c) 2020 http://www.najingquan.com All rights reserved. // +---------------------------------------------------------------------- // | Author: 救火隊隊長 // +---------------------------------------------------------------------- namespace app\admin\controller; use app\BaseController; class UdpClient extends BaseController { public function demo() { // 創建UDP客戶端 $client = new \Swoole\Client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC); // 發送消息 $client->sendto('212.64.29.192', 9602, "I am client..." . PHP_EOL); // 打印服務端返回的消息 echo $client->recv() . PHP_EOL; exit(); } } ``` ## **三,運行UDP客戶端** 瀏覽器訪問應用地址 ![](https://img.kancloud.cn/52/ef/52ef3a6a2581dde764a921f4e7ea4b04_575x117.png) UDP服務端會接收客戶端上傳的數據,并返回信息 ![](https://img.kancloud.cn/fd/e8/fde8a75a447afe7d6e467f4642237d75_610x195.png) 這樣就完成了簡單的udp服務器與udp客戶端的搭建!
                  <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>

                              哎呀哎呀视频在线观看