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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # swoole_client->connect 連接到遠程服務器,函數原型: ```php bool $swoole_client->connect(string $host, int $port, float $timeout = 0.5, int $flag = 0) ``` connect方法接受4個參數: * `$host`是遠程服務器的地址,`1.10.0`或更高版本已支持自動異步解析域名,`$host`可直接傳入域名 * `$port`是遠程服務器端口 * `$timeout`是網絡IO的超時,包括`connect/send/recv`,單位是s,支持浮點數。默認為`0.5s`,即`500ms` * $flag參數在`UDP`類型時表示是否啟用`udp_connect ` 設定此選項后將綁定`$host`與`$port`,此`UDP`將會丟棄非指定`host/port`的數據包。 * `$flag`參數在`TCP`類型,`$flag=1`表示設置為非阻塞socket,connect會立即返回。如果將`$flag`設置為1,那么在`send/recv`前必須使用`swoole_client_select`來檢測是否完成了連接 同步模式 ----- connect方法會阻塞,直到連接成功并返回true。這時候就可以向服務器端發送數據或者收取數據了。 ```php if ($cli->connect('127.0.0.1', 9501)) { $cli->send("data"); } else { echo "connect failed."; } ``` 如果連接失敗,會返回`false` > 同步TCP客戶端在執行`close`后,可以再次發起`Connect`創建新連接到服務器 異步模式 ---- `connect`會立即返回true。但實際上連接并未建立。所以不能在connect后使用`send`。通過`isConnected()`判斷也是false。當連接成功后,系統會自動回調onConnect。這時才可以使用`send`向服務器發送數據。 > 異步客戶端執行connect時會增加一次引用計數,當連接關閉時會減少引用計數 > 低于`1.9.11`的版本,`$timeout`超時設置`$timeout`在異步客戶端中是無效的,應用層需要用`Timer::after`自行添加定時器來實現異步客戶端的鏈接超時控制 > `1.9.11`或更高版本,底層會自動添加定時器,在規定的時間內未連接成功,底層會觸發`onError`連接失敗事件,錯誤碼為`ETIMEOUT(110)` 失敗重連 ---- `connect`失敗后如果希望重連一次,必須先進行`close`關閉舊的`socket`,否則會返回`EINPROCESS`錯誤,因為當前的socket正在連接服務器,客戶端并不知道是否連接成功,所以無法再次執行`connect`。調用`close`會關閉當前的`socket`,底層重新創建新的`socket`來進行連接。 > 啟用`SWOOLE_KEEP`長連接后,`close`調用的第一個參數要設置為`true`表示強行銷毀長連接socket ```php if ($socket->connect('127.0.0.1', 9502) === false) { $socket->close(true); $socket->connect('127.0.0.1', 9502); } ``` UDP Connect ---- 默認底層并不會啟用`udp connect`,一個`UDP`客戶端執行`connect`時,底層在創建`socket`后會立即返回成功。這時此`socket`綁定的地址是`0.0.0.0`,任何其他對端均可向此端口發送數據包。 如`$client->connect('192.168.1.100', 9502)`,這時操作系統為客戶端`socket`隨機分配了一個端口`58232`,其他機器,如`192.168.1.101`也可以向這個端口發送數據包。 > 未開啟`udp connect`,調用`getsockname`返回的`host`項為`0.0.0.0` 將第`4`項參數設置為`1`,啟用`udp connect`,`$client->connect('192.168.1.100', 9502, 1, 1)`。這時將會綁定客戶端和服務器端,底層會根據服務器端的地址來綁定`socket`綁定的地址。如連接了`192.168.1.100`,當前`socket`會被綁定到`192.168.1.*`的本機地址上。啟用`udp connect`后,客戶端將不再接收其他主機向此端口發送的數據包。
                  <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>

                              哎呀哎呀视频在线观看