<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、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                **socket_recvfrom** ( resource **$socket** , string **&$buf** , int **$len** , int **$flags** , string **&$name** [, int **&$port** ] ) : int — 從套接字接收數據,無論它是否面向連接 使用套接字從端口端口上的名稱(如果套接字不是AF_UNIX類型)接收buf中的len字節數據。 socket_recvfrom()可用于從已連接和未連接的套接字收集數據。 此外,可以指定一個或多個標志來修改功能的行為 名稱和端口必須通過引用傳遞。 如果套接字不是面向連接的,則名稱將設置為遠程主機的Internet協議地址或UNIX套接字的路徑。 如果套接字是面向連接的,則名稱為NULL。 此外,如果未連接AF_INET或AF_INET6套接字,則該端口將包含遠程主機的端口 返回接收到的字節數,如果有錯誤則返回FALSE。 可以通過調用socket_last_error()來檢索實際的錯誤代碼。 該錯誤代碼可以傳遞給socket_strerror()以獲得錯誤的文本說明 參數: socket 套接字必須是先前由socket_create()創建的套接字資源。 buf 接收到的數據將被提取到buf指定的變量中。 len 從遠程主機最多可以提取len個字節。 flags 標志的值可以是以下標志的任何組合,并與二進制OR(|)運算符結合在一起。 可用的`flags`值 | Flag | 描述 | | --- | --- | | **`MSG_OOB`** | 處理超出邊界的數據 | | **`MSG_PEEK`** | 從接受隊列的起始位置接收數據,但不將他們從接受隊列中移除。 | | **`MSG_WAITALL`** | 在接收到至少`len`字節的數據之前,造成一個阻塞,并暫停腳本運行(block)。但是, 如果接收到中斷信號,或遠程服務器斷開連接,該函數將返回少于`len`字節的數據。 | | **`MSG_DONTWAIT`** | 如果制定了該flag,函數將不會造成阻塞,即使在全局設置中指定了阻塞設置。 | name 如果套接字的類型為AF_UNIX類型,則name是文件的路徑。 否則,對于未連接的套接字,name是遠程主機的IP地址,如果套接字是面向連接的,則為NULL。 port 此參數僅適用于AF_INET和AF_INET6套接字,并指定從其接收數據的遠程端口。 如果套接字是面向連接的,則端口將為NULL >[danger]如果在UDP套接字上使用socket\_recvfrom并將其與MSG\_DONTWAIT標志結合使用,則如果沒有要讀取的內容,它將引發PHP警告。 AFAIK,除了用@抑制警告外,沒有其他方法可以解決該警告(即,在調用socket\_recvfrom之前無法檢查是否有數據) **例子** 本示例將在端口1223的127.0.0.1上啟動UDP套接字,并最多打印從遠程主機收到的12個字符 ``` error_reporting(E_ALL | E_STRICT); $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); socket_bind($socket, '127.0.0.1', 1223); $from = ''; $port = 0; socket_recvfrom($socket, $buf, 12, 0, $from, $port); echo "Received $buf from remote address $from and remote port $port" . PHP_EOL; ``` 使用UDP套接字的DNS中繼 ``` while(TRUE) { $socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP); if($socket === FALSE) { echo 'Socket_create failed: '.socket_strerror(socket_last_error())."\n"; } if(!socket_bind($socketD, "0.0.0.0", 53)) { socket_close($socketD); echo 'socket_bind failed: '.socket_strerror(socket_last_error())."\n"; } socket_recvfrom($socket,$buf,65535,0,$clientIP,$clientPort); $stz = bin2hex($buf); $tx = ""; for($i=0;$i<(strlen($stz)-26-10)/2;$i++) { $e = "00"; $e[0] = $stz[$i*2+26]; $e[1] = $stz[$i*2+27]; $f = hexdec($e); if($f > 0 && $f < 32) $tx .= "."; else $tx .= sprintf("%c",$f); } echo "$clientIP <".$tx.">\n"; $fp = fsockopen("udp://72.174.110.4",53,$errno,$errstr); if (!$fp) { echo "ERROR: $errno - $errstr<br />\n"; } else { fwrite($fp,$buf); $ret = $buf; $ret = fread($fp,667); fclose($fp); } } socket_send($socket,$ret,667,0); } ```
                  <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>

                              哎呀哎呀视频在线观看