<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    yxhxj2006

    常用鏈接

    統(tǒng)計

    最新評論

    php的curl和socket的區(qū)別

    首先說下啥是socket:
           php使用berkely的socket庫來創(chuàng)建他的連接,socket是一個數(shù)據(jù)結(jié)果,你可以通過這個socket來開啟服務(wù)器和客戶端的會話。服務(wù)器端一直處于監(jiān)聽狀態(tài),當一個客戶端連接服務(wù)器,他就打開服務(wù)器端正在監(jiān)聽的一個端口進行會話。這時服務(wù)器端接收客戶端的連接請求,那么就進行一次循環(huán)。現(xiàn)在這個客戶端就能夠發(fā)送信息到服務(wù)器,服務(wù)器也可以發(fā)送信息給客戶端。
          產(chǎn)生一個socket你一共需要三個變量:
         1、一個協(xié)議
         2、一個socket類型
         3、一個公共協(xié)議類型
         以下是對這三個變量的詳細解釋,大概了解下吧
         協(xié)議:產(chǎn)生一個socket有三個協(xié)議供選擇:
        1、AF_INET  這個是使用比較廣泛的產(chǎn)生socket的協(xié)議,使用tcp或者udp協(xié)議傳輸,使用ipv4地址
        2、AF_INET6 顯而易見哈,同上,不同的是使用ipv6地址
        3、AF_UNIX  使用在unix或者linux機器上,這個很少使用,僅在服務(wù)器端和客戶端均為unix或者linux系統(tǒng)上使用。
       
         socket類型:
         1、SOCK_STREAM  這個協(xié)議是按照順序的、可靠的、數(shù)據(jù)完整的基于字節(jié)流的連接。這是一個使用最多的socket類型,這個socket是使用TCP來進行傳輸。
         2、SOCK_DGRAM  這個協(xié)議是無連接的、固定長度的傳輸調(diào)用。該協(xié)議是不可靠的,使用UDP來進行它的連接。
         3、SOCK_SEQPACKET  這個協(xié)議是雙線路的、可靠的連接,發(fā)送固定長度的數(shù)據(jù)包進行傳輸。必須把這個包完整的接受才能進行讀取。
         4、SOCK_RAW  這個socket類型提供單一的網(wǎng)絡(luò)訪問,這個socket類型使用ICMP公共協(xié)議。(ping、traceroute使用該協(xié)議)
         5、SOCK_RDM  這個類型是很少使用的,在大部分的操作系統(tǒng)上沒有實現(xiàn),它是提供給數(shù)據(jù)鏈路層使用,不保證數(shù)據(jù)包的順序
         
         公共協(xié)議類型:
        1、ICMP (Internet Control Message Protocol)互聯(lián)網(wǎng)控制報文協(xié)議,主要用在網(wǎng)關(guān)和主機上,用來檢測網(wǎng)絡(luò)狀況和報告錯誤信息
        2、TCP  (Transmission Control Protocol) 傳輸控制協(xié)議,他是使用最廣泛的協(xié)議,他能夠保證數(shù)據(jù)包到達接收者那里,如果中途出現(xiàn)錯誤,那么此協(xié)議從新發(fā)送數(shù)據(jù)包。
       3、UDP   (User Datagram Protocol)用戶數(shù)據(jù)包協(xié)議,他是無連接的,不可靠的數(shù)據(jù)傳輸協(xié)議。

       好啦,你現(xiàn)在知道了產(chǎn)生一個socke需要三個元素,那么在php中socket_create()就需要三個參數(shù),一個協(xié)議,一個socket類型,一個公共協(xié)議。如果創(chuàng)建成功,socket_create()返回一個socket資源類型,如果不成功,嘿嘿,那你會收到一個false.
        
    CURL
    cURL  是利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具。他支持HTTP、FTP、TELNET。
        為啥要使用cURL呢?
       因為,如果我們有時候想靈活的獲取網(wǎng)頁上的內(nèi)容,例如處理coockies、驗證、表單提交、文件上傳等等等等。那么你就需要用到cURL.據(jù)說php有著功能強大的cURL庫(因為偶也說不清強大在哪里啦,
        php使用cURL的選項基本步驟如下:
        1、初始化
        2、參數(shù)設(shè)置
        3、頁面內(nèi)容獲取或者操作
        4、釋放句柄

    看看下面這個簡單的例子吧。
    <?php  
    //初始化curl  
    $ch = curl_init ();  
    /* 
     * 設(shè)置curl 
     * php手冊對于curl_setopt的解釋為:設(shè)置對于curl傳輸?shù)牟僮?nbsp;
     * curl_setopt有三個參數(shù):資源(一般為你建立的curl句柄)、操作(你將對這個句柄作何操作)、參數(shù)(對于這個操作你給出的參數(shù)) 
     
    */  
    //例如你想對百度進行某些操作  
    curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");  
    //現(xiàn)在看來你要向百度post數(shù)據(jù)  
    curl_setopt ( $ch, CURLOPT_POST, 1 );  
    /*給出了要post的數(shù)據(jù):$post_string,post的數(shù)據(jù)可以是一個文件, 
    *那么你需要以@加上文件的全路徑給出,或者你要post一些數(shù)據(jù), 
    *那么你可以按照數(shù)組形式給出,或者按照字符串給出, 
    *如果你想按照字符串形式給出,請把字符串urlencode,嘿嘿 
    */  
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_string );  
    /* 
     *把curl操作的結(jié)果以字符串形式 從curl_exec ()返回,而不是直接就輸出了 
     
    */  
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );  
    //得到操作返回結(jié)果  
    $result = curl_exec ( $ch );  
    //關(guān)閉curl句柄  
    curl_close ( $ch );   
    ?>  
    因為php的curl有很多操作,要都記住估計很困難,反正偶記不住啦,說些大家可能用的上的吧。大笑
    獲取服務(wù)器的一些信息
    [php] view plaincopy
    <?php  
      
      
    //初始化curl  
    $ch = curl_init ();  
      
    curl_setopt ( $ch, CURLOPT_URL, "http://www.baidu.com");  
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );  
    curl_exec($ch);  
    $info = curl_getinfo($ch);  
      
    var_dump($info);  
    ?>  

    通過上面的例子,你將會獲得如下信息:
    “url” //資源網(wǎng)絡(luò)地址
    “content_type” //內(nèi)容編碼
    “http_code” //HTTP狀態(tài)碼
    “header_size” //header的大小
    “request_size” //請求的大小
    “filetime” //文件創(chuàng)建時間
    “ssl_verify_result” //SSL驗證結(jié)果
    “redirect_count” //跳轉(zhuǎn)技術(shù)  
    “total_time” //總耗時
    “namelookup_time” //DNS查詢耗時
    “connect_time” //等待連接耗時
    “pretransfer_time” //傳輸前準備耗時
    “size_upload” //上傳數(shù)據(jù)的大小
    “size_download” //下載數(shù)據(jù)的大小
    “speed_download” //下載速度
    “speed_upload” //上傳速度
    “download_content_length”//下載內(nèi)容的長度
    “upload_content_length” //上傳內(nèi)容的長度  
    “starttransfer_time” //開始傳輸?shù)臅r間
    “redirect_time”//重定向耗時

    利用curl你還可以做以下操作:
    模擬頁面的post操作
    文件上傳
    HTTP 認證
    FTP 上傳
    回調(diào)函數(shù)
    以上關(guān)于curl的大前提是你的php在安裝編譯時加了 --with-curlwrappers ,你可以通過phpinfo()操作來查看你是不是在編譯時加了這個擴展庫。
    如果加載了這個擴展,你將能看見類似:
    如果你沒有這個擴展,你需要改一下php.ini文件,去掉extension=php_curl.dll前面的分號。
    好啦,現(xiàn)在我們知道socket和curl是咋回事了,socket是一種數(shù)據(jù)結(jié)構(gòu),他可以用來在服務(wù)器和客戶端進行對話。而curl是利用url語法規(guī)定來傳輸文件和數(shù)據(jù)的規(guī)定,支持很多協(xié)議,例如FTP,HTTP、TELNET等。

    posted on 2014-12-31 19:03 奮斗成就男人 閱讀(509) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久精品免费一区二区三区| 一级一级毛片免费播放| 一级毛片免费毛片一级毛片免费 | 免费人成无码大片在线观看| 久久精品亚洲AV久久久无码 | 亚洲国产片在线观看| 久久午夜伦鲁片免费无码| 亚洲三级电影网站| 久久午夜羞羞影院免费观看| 亚洲精品人成电影网| 91网站免费观看| 国产精品亚洲精品观看不卡| 四虎在线免费播放| 无套内射无矿码免费看黄| 伊人婷婷综合缴情亚洲五月| 亚洲人xxx日本人18| 成人免费毛片内射美女APP| 亚洲AV女人18毛片水真多| 亚洲国产精品不卡毛片a在线| 国产VA免费精品高清在线| 亚洲va久久久噜噜噜久久天堂| 永久在线免费观看| 亚洲另类无码专区丝袜| 婷婷综合缴情亚洲狠狠尤物| 中国人免费观看高清在线观看二区| 久久久久久久久亚洲| 成年女人色毛片免费看| 成人免费夜片在线观看| 亚洲人成影院在线| 日本免费人成黄页网观看视频| 一级人做人爰a全过程免费视频| 久久久久亚洲精品成人网小说 | 亚洲中文字幕无码av永久| 亚洲av无码专区在线观看素人| 曰批全过程免费视频在线观看无码 | 亚洲sss综合天堂久久久| 免费a级毛片18以上观看精品| 3344在线看片免费| 亚洲欧美国产国产一区二区三区 | 亚洲国产精品成人一区| 131美女爱做免费毛片|