這篇文章主要講解了“php socket和curl有什么區(qū)別”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php socket和curl有什么區(qū)別”吧!
成都創(chuàng)新互聯(lián)長期為近1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為長泰企業(yè)提供專業(yè)的做網(wǎng)站、網(wǎng)站建設(shè),長泰網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
php socket和curl的不同之處:1、socket是一種數(shù)據(jù)結(jié)構(gòu),可以用來在服務(wù)器和客戶端進(jìn)行對話;2、curl是利用url語法規(guī)定來傳輸文件和數(shù)據(jù)的規(guī)定,支持很多協(xié)議,例如FTP、HTTP、TELNET等。
本文操作環(huán)境:Windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php socket和curl有什么不同?
php的curl和socket的區(qū)別
PHP使用berkely的socket庫來創(chuàng)建他的連接,socket是一個數(shù)據(jù)結(jié)果,你可以通過這個socket來開啟服務(wù)器和客戶端的會話。服務(wù)器端一直處于監(jiān)聽狀態(tài),當(dāng)一個客戶端連接服務(wù)器,他就打開服務(wù)器端正在監(jiān)聽的一個端口進(jìn)行會話。這時服務(wù)器端接收客戶端的連接請求,那么就進(jìn)行一次循環(huán)?,F(xiàn)在這個客戶端就能夠發(fā)送信息到服務(wù)器,服務(wù)器也可以發(fā)送信息給客戶端。
產(chǎn)生一個socket你一共需要三個變量:
1、一個協(xié)議
2、一個socket類型
3、一個公共協(xié)議類型
以下是對這三個變量的詳細(xì)解釋,大概了解下吧(但愿你能記得住偷笑)
協(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機(jī)器上,這個很少使用,僅在服務(wù)器端和客戶端均為unix或者linux系統(tǒng)上使用。
socket類型:
1、SOCK_STREAM 這個協(xié)議是按照順序的、可靠的、數(shù)據(jù)完整的基于字節(jié)流的連接。這是一個使用最多的socket類型,這個socket是使用TCP來進(jìn)行傳輸。
2、SOCK_DGRAM 這個協(xié)議是無連接的、固定長度的傳輸調(diào)用。該協(xié)議是不可靠的,使用UDP來進(jìn)行它的連接。
3、SOCK_SEQPACKET 這個協(xié)議是雙線路的、可靠的連接,發(fā)送固定長度的數(shù)據(jù)包進(jìn)行傳輸。必須把這個包完整的接受才能進(jìn)行讀取。
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)和主機(jī)上,用來檢測網(wǎng)絡(luò)狀況和報告錯誤信息
2、TCP (Transmission Control Protocol) 傳輸控制協(xié)議,他是使用最廣泛的協(xié)議,他能夠保證數(shù)據(jù)包到達(dá)接收者那里,如果中途出現(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 是利用URL語法規(guī)定來傳輸文件和數(shù)據(jù)的工具。他支持HTTP、FTP、TELNET。
為啥要使用cURL呢?
因為,如果我們有時候想靈活的獲取網(wǎng)頁上的內(nèi)容,例如處理coockies、驗證、表單提交、文件上傳等等等等。那么你就需要用到cURL.據(jù)說php有著功能強(qiáng)大的cURL庫(因為偶也說不清強(qiáng)大在哪里啦,所以用了“據(jù)說”大笑)。
php使用cURL的選項基本步驟如下:
1、初始化
2、參數(shù)設(shè)置
3、頁面內(nèi)容獲取或者操作
4、釋放句柄
看看下面這個簡單的例子吧。
因為php的curl有很多操作,要都記住估計很困難,反正偶記不住啦,說些大家可能用的上的吧。
獲取服務(wù)器的一些信息
通過上面的例子,你將會獲得如下信息:
“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” //傳輸前準(zhǔn)備耗時
“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你還可以做以下操作:
1.模擬頁面的post操作
2.文件上傳
3.HTTP 認(rèn)證
4.FTP 上傳
5.FQ術(shù)
6.回調(diào)函數(shù)
ps:
以上關(guān)于curl的大前提是你的php在安裝編譯時加了 --with-curlwrappers ,你可以通過phpinfo()操作來查看你是不是在編譯時加了這個擴(kuò)展庫。
如果加載了這個擴(kuò)展,你將能看見類似:如果你沒有這個擴(kuò)展,你需要改一下php.ini文件,去掉extension=php_curl.dll前面的分號。
好啦,現(xiàn)在我們知道socket和curl是咋回事了,socket是一種數(shù)據(jù)結(jié)構(gòu),他可以用來在服務(wù)器和客戶端進(jìn)行對話。而curl是利用url語法規(guī)定來傳輸文件和數(shù)據(jù)的規(guī)定,支持很多協(xié)議,例如FTP,HTTP、TELNET等。
感謝各位的閱讀,以上就是“php socket和curl有什么區(qū)別”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php socket和curl有什么區(qū)別這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
本文標(biāo)題:phpsocket和curl有什么區(qū)別
文章網(wǎng)址:http://weahome.cn/article/goisdg.html