精品视频日韩无码,伊人久久无码av一区二区三区,久久艹视频国产视频,欧美成A人免费观看久久

  1. <tt id="u23fe"><i id="u23fe"><sub id="u23fe"></sub></i></tt>

      <b id="u23fe"><address id="u23fe"><kbd id="u23fe"></kbd></address></b>

      <source id="u23fe"><track id="u23fe"></track></source>
    1. 位置: 編程技術(shù) - 正文

      php的socket編程詳解(php socket編程)

      編輯:rootadmin

      推薦整理分享php的socket編程詳解(php socket編程),希望有所幫助,僅作參考,歡迎閱讀內(nèi)容。

      文章相關(guān)熱門搜索詞:簡單理解php的socket編程,php socketio,php sockets,php socket編程,php socket_select,php socketio,php socketio,php socket編程,內(nèi)容如對(duì)您有幫助,希望把文章鏈接給更多的朋友!

          php的socket編程算是比較難以理解的東西吧,不過,我們只要理解socket幾個(gè)函數(shù)之間的關(guān)系,以及它們所扮演的角色,那么理解起來應(yīng)該不是很難了,在筆者看來,socket編程,其實(shí)就是建立一個(gè)網(wǎng)絡(luò)服務(wù)的客戶端和服務(wù)端,這和mysql的客戶端和服務(wù)端是一樣的,你只要理解mysql的客戶端和服務(wù)端是怎么一回事,你就應(yīng)該能夠理解下面我要講的東西吧。

          關(guān)于socket編程所涉及到的網(wǎng)絡(luò)協(xié)議,什么TCP啊,UDP啊,什么socket三次握手等等,這些網(wǎng)絡(luò)協(xié)議網(wǎng)上有很詳細(xì)的解釋,這里不講,只截個(gè)socket建立套接的過程圖讓你瞧瞧:

                        

          這個(gè)圖是我辛辛苦苦從別人那里盜截過來的,你一定要好好看啊,同時(shí),在這里我也向那個(gè)被我盜截圖的筆者表示感謝,本人對(duì)自己盜取你的圖案表示歉意,還望你大人大量不要計(jì)較啊。本人實(shí)在太懶了,懶得畫圖,(其實(shí)是對(duì)自己的畫圖技術(shù)表示不自信,呵呵)。

          socket是怎么建立連接的呢?上面已經(jīng)提到過了,它建立連接的過程是與mysql的客戶端和服務(wù)端的連接本質(zhì)是一樣的。而它與mysql不同的是,mysql的服務(wù)端和客戶端都已經(jīng)為我們編輯好了,我們只要應(yīng)用就行了。但是,關(guān)鍵時(shí)刻來啦,socket它什么東西都沒有提供給我們,唯一提供給我們的就是:幾十個(gè)socket函數(shù)。

          這言外之意就是說,socket編程就是要我們自己創(chuàng)建服務(wù)端和客戶端,也就是說,``socket編程``——就是要我們自己建立一個(gè)類似于mysql的服務(wù)端和客戶端的應(yīng)用。

          說到這里,我想問一句,你說這socket讓人頭疼不?它既不建立個(gè)服務(wù)端,也不建立個(gè)客戶端給我們應(yīng)用,非要讓我們自己去應(yīng)用socket的函數(shù),創(chuàng)建一個(gè)屬于我們自己的網(wǎng)絡(luò)協(xié)議套接應(yīng)用,這是不是很讓你頭疼呢?頭疼也沒辦法,要是你需要自己的應(yīng)用,你還是不得不跟socket打交道。呵呵,這只是題外話,不多說,下面進(jìn)入正題。

          在你沒有被socket編程搞蒙之前,我還是讓你看看socket的幾個(gè)關(guān)鍵函數(shù),先給你解釋一下它們各自的作用。不然,要是對(duì)socket編程一點(diǎn)基礎(chǔ)都沒有的人看到了,我怕你看了之后,就果斷跳過這篇文章,從此對(duì)socket產(chǎn)生恐懼癥了。呵呵,又多說了。

          socket的關(guān)鍵函數(shù)1:

           socket_create($net參數(shù)1,$stream參數(shù)2,$protocol參數(shù)3)

          作用:創(chuàng)建一個(gè)socket套接字,說白了,就是一個(gè)網(wǎng)絡(luò)數(shù)據(jù)流。

          返回值:一個(gè)套接字,或者是false,參數(shù)錯(cuò)誤發(fā)出E_WARNING警告

          php的在線手冊(cè)那里說得更清楚:

          socket_create創(chuàng)建并返回一個(gè)套接字,也稱作一個(gè)通訊節(jié)點(diǎn)。一個(gè)典型的網(wǎng)絡(luò)連接由 2 個(gè)套接字構(gòu)成,一個(gè)運(yùn)行在客戶端,另一個(gè)運(yùn)行在服務(wù)器端。

      上面一句話是從php在線手冊(cè)那里復(fù)制過來的??吹?jīng)]有,這里說得意思是不是和我上面反反復(fù)復(fù)提到的客戶端與服務(wù)端一模一樣?呵呵。

          參數(shù)1是:網(wǎng)絡(luò)協(xié)議,

          網(wǎng)絡(luò)協(xié)議有哪些?它的選擇項(xiàng)就下面這三個(gè):

          AF_INET:   IPv4 網(wǎng)絡(luò)協(xié)議。TCP 和 UDP 都可使用此協(xié)議。一般都用這個(gè),你懂的。

          AF_INET6:   IPv6 網(wǎng)絡(luò)協(xié)議。TCP 和 UDP 都可使用此協(xié)議。

          AF_UNIX:   本地通訊協(xié)議。具有高性能和低成本的 IPC(進(jìn)程間通訊)。

          參數(shù)2:套接字流,選項(xiàng)有:

          SOCK_STREAM  SOCK_DGRAM  SOCK_SEQPACKET  SOCK_RAW  SOCK_RDM。

          這里只對(duì)前兩個(gè)進(jìn)行解釋:

          SOCK_STREAM  TCP 協(xié)議套接字。

          SOCK_DGRAM   UDP協(xié)議套接字。

          欲了解更多請(qǐng)鏈接這里:    參數(shù)3:protocol協(xié)議,選項(xiàng)有:

          SOL_TCP:  TCP 協(xié)議。

          SOL_UDP:  UDP協(xié)議。

          從這里可以看出,其實(shí)socket_create函數(shù)的第二個(gè)參數(shù)和第三個(gè)參數(shù)是相關(guān)聯(lián)的。

          比如,假如你第一個(gè)參數(shù)應(yīng)用IPv4協(xié)議:AF_INET,然后,第二個(gè)參數(shù)應(yīng)用的是TCP套接字:SOCK_STREAM,

          那么第三個(gè)參數(shù)必須要用SOL_TCP,這個(gè)應(yīng)該不難理解。

          TCP 協(xié)議套接字嘛,當(dāng)然只能用TCP協(xié)議了,是不是?如果你應(yīng)用UDP套接字,那么第三個(gè)參數(shù)該怎么選擇我就不說了,呵呵,你懂的。

          關(guān)鍵函數(shù)2:

          socket_connect($socket參數(shù)1,$ip參數(shù)2,$port參數(shù)3)

          作用:連接一個(gè)套接字,返回值為true或者false

          參數(shù)1:socket_create的函數(shù)返回值

          參數(shù)2:ip地址

          參數(shù)3:端口號(hào)

          關(guān)鍵函數(shù)3:

          socket_bind($socket參數(shù)1,$ip參數(shù)2,$port參數(shù)3)

          作用:綁定一個(gè)套接字,返回值為true或者false

         參數(shù)1:socket_create的函數(shù)返回值

          參數(shù)2:ip地址

          參數(shù)3:端口號(hào)

          關(guān)鍵函數(shù)4:

          socket_listen($socket參數(shù)1,$backlog 參數(shù)2)

          作用:監(jiān)聽一個(gè)套接字,返回值為true或者false

          參數(shù)1:socket_create的函數(shù)返回值

          參數(shù)2:最大監(jiān)聽套接字個(gè)數(shù)

          關(guān)鍵函數(shù)5:

          socket_accept($socket)

      php的socket編程詳解(php socket編程)

          作用:接收套接字的資源信息,成功返回套接字的信息資源,失敗為false

         參數(shù):socket_create的函數(shù)返回值

          關(guān)鍵函數(shù)6:

          socket_read($socket參數(shù)1,$length參數(shù)2)

          作用:讀取套接字的資源信息,

          返回值:成功把套接字的資源轉(zhuǎn)化為字符串信息,失敗為false

          參數(shù)1:socket_create或者socket_accept的函數(shù)返回值

          參數(shù)2:讀取的字符串的長度

          關(guān)鍵函數(shù)7:

          socket_write($socket參數(shù)1,$msg參數(shù)2,$strlen參數(shù)3)

          作用:把數(shù)據(jù)寫入套接字中

          返回值:成功返回字符串的字節(jié)長度,失敗為false

          參數(shù)1:socket_create或者socket_accept的函數(shù)返回值

          參數(shù)2:字符串

          參數(shù)3:字符串的長度

          關(guān)鍵函數(shù)8:

          socket_close($socket)

          作用:關(guān)閉套接字

          返回值:成功返回true,失敗為false

         參數(shù):socket_create或者socket_accept的函數(shù)返回值

          這八個(gè)函數(shù)是socket的核心函數(shù),下面列舉兩個(gè)個(gè)比較重要的函數(shù)

          socket_last_error($socket),參數(shù)為socket_create的返回值,作用是獲取套接字的最后一條錯(cuò)誤碼號(hào),返回值套接字code

          socket_strerror($code),參數(shù)為socket_last_error函數(shù)的返回值,獲取code的字符串信息,返回值也就是套接字的錯(cuò)誤信息

          這兩個(gè)函數(shù)在socket編程中還是很重要的,在寫socket編程的時(shí)候,我覺得你還是得利用起來,特別是新手,可以當(dāng)做調(diào)試用

          

          下面就是代碼了,注意注意,請(qǐng)認(rèn)真看我的注釋,注釋很重要,注釋很重要,注釋很重要,重要的事情要大喊三遍,呵呵。

          服務(wù)端腳本,D:vhosttestsocketserver_socket.php 

          小提示:請(qǐng)注意上面的socket_bind,socket_listen,socket_accept三個(gè)函數(shù)的執(zhí)行順序不可更改,也就是說

          必須先執(zhí)行socket_bind,再執(zhí)行socket_listen,最后才執(zhí)行socket_accept

          客戶端腳本,D:vhosttestsocketclient_socket.php

          怎么測試這兩個(gè)腳本呢?

          首先打開windows的dos窗口,就是cmd黑窗口,然后,運(yùn)行php D:vhosttestsocketserver_socket.php,

          讓服務(wù)端的的黑窗口持續(xù)運(yùn)行的,

          其次,php的客戶端腳本可以通過瀏覽器運(yùn)行,也可以再開一個(gè)cmd黑窗口運(yùn)行

          php D:vhosttestsocketclient_socket.php

          在這里請(qǐng)注意:php這個(gè)運(yùn)行命名必須加入windows的環(huán)境變量中,假如不知道怎么加,

          請(qǐng)進(jìn)入php運(yùn)行命令目錄用絕對(duì)命令運(yùn)行,也可以百度把php命令加入環(huán)境變量中

          這里是我的情況,你的文件地址可能和我不一樣,請(qǐng)按照你的地址情況來操作,否則,后果自負(fù),呵呵

          上面已經(jīng)說過了,socket編程必須要有服務(wù)端才能交流,所以服務(wù)端的黑窗口是必須讓它持續(xù)開著的。

          后記補(bǔ)充:

      socket_set_option($socket參數(shù)1 ,$level 參數(shù)2,$optname 參數(shù)3,$optval 參數(shù)4)

      這個(gè)函數(shù)的作用是給套接字設(shè)置數(shù)據(jù)流選項(xiàng),還是一個(gè)很重要的函數(shù)。

      參數(shù)1:socket_create或者socket_accept的函數(shù)返回值

      參數(shù)2:SOL_SOCKET,好像只有這個(gè)選項(xiàng)

      參數(shù)3與參數(shù)4是相關(guān)聯(lián)的,

      參數(shù)3可為:SO_REUSEADDR  SO_RCVTIMEO S0_SNDTIMEO

      解釋一下:

      SO_REUSEADDR  是讓套接字端口釋放后立即就可以被再次使用

              參數(shù)3假如是這個(gè),則參數(shù)4可以為true或者false

      SO_RCVTIMEO   是套接字的接收資源的最大超時(shí)時(shí)間

      SO_SNDTIMEO   是套接字的發(fā)送資源的最大超時(shí)時(shí)間

        參數(shù)3假如是這兩個(gè),則參數(shù)4是一個(gè)這樣的數(shù)組array('sec'=>1,'usec'=>)

        數(shù)組里面都是設(shè)置超時(shí)的最大時(shí)間,不過,一個(gè)是秒為單位,一個(gè)是微秒單位,作用都一樣 

      php中strtotime函數(shù)性能分析 最近在做一個(gè)游戲數(shù)據(jù)統(tǒng)計(jì)后臺(tái),最基礎(chǔ)的功能是通過分析注冊(cè)登錄日志來展示用戶數(shù)據(jù)。在公司內(nèi)部測試,用戶量很少,所以就沒有發(fā)現(xiàn)什么性能問

      php運(yùn)行報(bào)錯(cuò)Call to undefined function curl_init()的最新解決方法 之前網(wǎng)上的解決方法如下:1、在php.ini中開啟curl擴(kuò)展2、將php目錄下的libeay.dll、ssleay.dll、php5ts.dll拷貝到c:windowssystem里面(還有一種方法是說在httpd

      靜態(tài)html文件執(zhí)行php語句的方法(推薦) HTM文件中的PHP語句不會(huì)被執(zhí)行,如何在HTML文件中運(yùn)行php代碼?html文件執(zhí)行php語句的方法:1,修改httpd.conf,命令A(yù)pache把HTML當(dāng)作PHP,需要修改服務(wù)器里的ht

      標(biāo)簽: php socket編程

      本文鏈接地址:http://esstyw.cn/biancheng/301167.html 轉(zhuǎn)載請(qǐng)保留說明!

      上一篇:PHP內(nèi)置加密函數(shù)詳解(php加密技術(shù))

      下一篇:php中strtotime函數(shù)性能分析(php的time函數(shù))

    2. 社保個(gè)人承擔(dān)部分
    3. 單位人民幣卡賬戶可以支取現(xiàn)金嗎
    4. 殘疾人就業(yè)保障金會(huì)計(jì)分錄怎么做
    5. 小型微利企業(yè)季度申報(bào)
    6. 公司在籌備階段可以不交社保
    7. 增值稅13%稅率有哪些
    8. 房地產(chǎn)中的存貨是什么意思
    9. 資產(chǎn)的企業(yè)所得稅怎么算
    10. 接受捐贈(zèng)的增值稅計(jì)入利潤總額嗎
    11. 稅率和征收率的含義和區(qū)別
    12. 現(xiàn)金賬沖賬怎么沖
    13. 設(shè)備的配件怎么做分錄
    14. 怎么開個(gè)體工商戶
    15. 增值稅一般納稅企業(yè)支付現(xiàn)金方式取得
    16. 納稅人備案信息包括
    17. 收到發(fā)票后怎么處理
    18. 外幣報(bào)表折算差額為負(fù)數(shù)代表
    19. 企業(yè)支付員工的工資
    20. 進(jìn)口應(yīng)付款融資
    21. 無需支付的款項(xiàng)需要繳稅嗎
    22. 視同銷售收入如何調(diào)整?
    23. 應(yīng)付利息和應(yīng)計(jì)利息怎么區(qū)分
    24. 出口退稅的條件包括哪些( )
    25. rsmsink.exe - rsmsink是什么進(jìn)程 有何作用
    26. php字符串函數(shù)有哪些
    27. PHP:curl_copy_handle()的用法_cURL函數(shù)
    28. 小規(guī)模納稅人銷售使用過的固定資產(chǎn)
    29. 3gwifi怎么用
    30. php imagestring
    31. 勞務(wù)報(bào)酬所得與經(jīng)營所得
    32. php重定向偽造referer
    33. 借銀行卡給別人過賬有什么風(fēng)險(xiǎn)
    34. 簡述php的概念和特點(diǎn)
    35. vue路由實(shí)例
    36. es6的class類如何實(shí)現(xiàn)繼承
    37. linuxmd5加密
    38. 以前年度損益調(diào)整借貸方向
    39. 個(gè)體工商戶沒有收入要交稅嗎
    40. 企業(yè)注銷前的賬務(wù)處理
    41. 金稅盤服務(wù)費(fèi)分錄
    42. 增值稅電子普通發(fā)票和專票的區(qū)別
    43. 注銷的公司需要清算嗎
    44. 去年發(fā)生了什么
    45. 基礎(chǔ)的數(shù)據(jù)類型
    46. sql server評(píng)估期已過版本升級(jí)時(shí)重啟失敗
    47. 季度利潤是負(fù)數(shù)怎么辦
    48. 還款利息
    49. 稅務(wù)查賬后如何結(jié)轉(zhuǎn)
    50. 廣告設(shè)計(jì)要交文化事業(yè)建設(shè)
    51. 建筑施工企業(yè)適用什么會(huì)計(jì)制度
    52. 營業(yè)外支出在貸方
    53. 會(huì)計(jì)人要求
    54. 速動(dòng)比率和流動(dòng)比率的關(guān)系
    55. 第三方平臺(tái)傭金賬務(wù)處理
    56. 公司注銷后退資需要交稅嗎
    57. 材料折扣會(huì)計(jì)分錄
    58. 公司注銷時(shí)應(yīng)付賬款怎么處理
    59. 職工教育經(jīng)費(fèi)調(diào)增
    60. 廣告費(fèi)用收入
    61. 工傷醫(yī)療補(bǔ)助可以申請(qǐng)嗎
    62. 營業(yè)外收入是否影響營業(yè)利潤
    63. 出售二手固定資產(chǎn)如何開票
    64. 請(qǐng)問在哪里可以買到震樓器
    65. sqlserver管理工具有哪些
    66. windowsserver2008r2standard激活
    67. window7 aero
    68. 安裝centos圖形界面
    69. mac和iphone互動(dòng)
    70. linux怎么配置vim
    71. OpenCV-2.4.3+VS2010+Win7(32位)安裝與配置
    72. angular創(chuàng)建項(xiàng)目命令
    73. nodejs怎么啟動(dòng)服務(wù)
    74. unity的協(xié)程
    75. vue如何用
    76. shell腳本檢查語法
    77. python爬取電視劇
    78. 自來水征稅
    79. 重慶市房產(chǎn)交易信息網(wǎng)
    80. 辦公室租金可以開專票抵扣進(jìn)項(xiàng)稅嗎
    81. 自建房交契稅需要什么
    82. 免責(zé)聲明:網(wǎng)站部分圖片文字素材來源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)及時(shí)告知,我們會(huì)第一時(shí)間刪除,謝謝! 郵箱:opceo@qq.com

      鄂ICP備2023003026號(hào)

      網(wǎng)站地圖: 企業(yè)信息 工商信息 財(cái)稅知識(shí) 網(wǎng)絡(luò)常識(shí) 編程技術(shù)

      友情鏈接: 武漢網(wǎng)站建設(shè)