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

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                UDP 協議與 TCP 協議屬同一層的網絡協議,相比 TCP 協議而言,UDP 協議則輕巧了許多,UDP 協議是一個高效且不可信的傳輸協議,因為 UDP 協議只管發送數據,無法得知數據是否傳輸成功。當數據傳輸環境特別可靠(如內網環境)或者數據丟失部分也可以接受,并且無法容忍延時。則推薦使用 UDP 協議。 接下來我們演示一下如何用 ThinkPHP5 和 Swoole 來構架一個 UDP 服務器 創建 ThinkPHP5 自定義命令行 1.創建命令行類 - 創建application/console/UdpServer.php文件 ~~~ <?php namespace app\Console; use think\console\Command; use think\console\Input; use think\console\Output; class UdpServer extends Command { protected $server; // 命令行配置函數 protected function configure() { // setName 設置命令行名稱 // setDescription 設置命令行描述 $this->setName('udp:start')->setDescription('Start UDP Server!'); } // 設置命令返回信息 protected function execute(Input $input, Output $output) { $this->server = new \swoole_server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); // 設置 server 運行前各項參數 $this->server->set([ 'worker_num' => 4, 'daemonize' => false, ]); // 注冊回調函數 $this->server->on('Start', [$this, 'onStart']); $this->server->on('Packet', [$this, 'onPacket']); $this->server->on('Close', [$this, 'onClose']); // 啟動服務器 $this->server->start(); } // 主進程啟動時回調函數 public function onStart(\swoole_server $server) { echo "Start\n"; } // 接受數據回調 public function onPacket(\swoole_server $server, $data, $clientInfo) { $server->sendto($clientInfo['address'], $clientInfo['port'], "Server " . $data); var_dump($data); var_dump($clientInfo); } // 關閉連時回調函數 public function onClose(\swoole_server $server, $fd, $from_id) { echo "Close\n"; } } ~~~ UDP 服務器和 TCP 服務器 不同,UDP 協議沒有連接的概念。啟動服務器后,客戶端無需連接,所以 UDP 服務器沒有 Connect 回調函數,直接可以向服務器監聽的 9502 端口發送數據包。需要注意的是 UDP 服務器接受數據的事件為 onPacket,TCP 服務器接受數據的事件為 onReceive。 2.修改配置文件 - 文件所在 application/command.php ~~~ <?php return [ 'app\console\UdpServer', ]; ~~~ 接下來就可以通過命令行來啟動 UDP 服務器 $ > `php think udp:start` 確保 UDP 服務器正常啟動后,我們簡單改造一下之前的同步 TCP 客戶端,來用 Swoole 自己實現一個 UDP 客戶端來想 UDP 服務器發送數據 ~~~ <?php // 實例化同步阻塞 UDP 客戶端 $client = new \swoole_client(SWOOLE_SOCK_UDP, SWOOLE_SOCK_SYNC); // 建立連接,連接失敗時停止程序 $client->connect('127.0.0.1', 9502) or die("connect failed\n"); // 向 UDP 服務器發送數據 $client->send('111'); echo "ok"; ~~~ 把 TCP 客戶端修改成 UDP 客戶端只需要把SWOOLE_SOCK_TCP修改為SWOOLE_SOCK_UDP,并且刪除掉返回接受數據函數即可 在瀏覽器中訪問后得到ok后,確定向服務器發送數據成功,接下來我們查看服務器返回結果 返回結果中正確的返回了,客戶端向服務器發送的內容,同時顯示出客戶端的相關信息
                  <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>

                              哎呀哎呀视频在线观看