亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

php socket編程常用的函數以及簡單c-s交互的實現

2020-03-22 19:51:39
字體:
來源:轉載
供稿:網友
本篇文章給大家分享的內容是關于php socket編程常用的函數以及簡單c/s交互的實現,內容很詳細,有需要的朋友可以參考一下,希望可以幫助到你們。

Socket 簡介

Socket 的官方解釋:
網絡編程中最常用的方案便是Client/Server(客戶機/服務器)模型。在這種方案中客戶html' target='_blank'>應用程序向服務器程序請求服務。一個服務程序通常在一個眾所周知的地址監聽對服務的請求,也就是說,服務進程一 直處于休眠狀態,直到一個客戶向這個服務的地址提出了連接請求。在這個時刻,服務程序被 驚醒 并且為客戶提供服務-對客戶的請求作出適當的反應。為了方便這種Client/Server模型的網絡編程,90年代初,由Microsoft聯合了其他幾家公司共同制定了一套WINDOWS下的網絡編程接口,即WindowsSockets規范,它不是一種網絡協議,而是一套開放的、支持多種協議的Windows下的網絡編程接口?,F在的Winsock已經基本上實現了與協議無關,你可以使用Winsock來調用多種協議的功能,但較常使用的是TCP/IP協議。Socket實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有Socket接口的計算機通信。應用程序在網絡上傳輸,接收的信息都通過這個Socket接口來實現

我們可以簡單的把 Socket 理解為一個可以連通網絡上不同計算機應用程序之間的管道,把一堆數據從管道的 A 端扔進去,則會從管道的 B 端(同時還可以從C、D、E、F……端冒出來)。

注意:我們會在不同語境下使用不同的詞語去修飾 socket,你只需要對它有個概念就好了,因為 socket 本身就沒有真正意義上的實體

Socket 函數介紹

Socket 通信依次會進行 Socket 創建、 Socket 綁定、Socket 監聽、Socket 收發、Socket 關閉幾個階段,下面我們列舉出 PHP 網絡編程中最常用也是必不可少的幾個常用的函數進行進一步的說明。

socket_create

TODO : 創建一個新的 socket 資源
函數原型: resource socket_create ( int $domain , int $type , int $protocol )
它包含三個參數,分別如下:

domain:AF_INET、AF_INET6、AF_UNIX,AF的釋義就 address family,地址族的意思,我們常用的有 ipv4、ipv6

type: SOCK_STREAM、SOCK_DGRAM等,最常用的就是SOCK_STREAM,基于字節流的SOCKET類型,也是TCP協議使用的類型

protocol: SOL_TCP、SOL_UDP 這個就是具體使用的傳輸協議,一般可靠的傳輸我們選擇 TCP,游戲數據傳輸我們一般選用 UDP 協議

socket_bind

TODO : 將創建的 socket 資源綁定到具體的 ip 地址和端口
函數原型: bool socket_bind ( resource $socket , string $address [, int $port = 0 ] )

它包含三個參數,分別如下:

socket: 使用socket_create創建的 socket 資源,可以認為是 socket 對應的 id

address: ip 地址

port: 監聽的端口號,WEB 服務器默認80端口

socket_listen

TODO : 在具體的地址下監聽 socket 資源的收發操作
函數原型: bool socket_listen ( resource $socket [, int $backlog = 0 ] )

它包含兩個個參數,分別如下:

socket: 使用socket_create創建的socket資源

backlog: 等待處理連接隊列的最大長度

socket_accept

TODO : 監聽之后,接收一個即將來臨的新的連接,如果連接建立成功,將返回一個新的 socket 句柄(你可以理解為子進程,通常父進程用來接收新的連接,子進程負責具體的通信)
函數原型: resource socket_accept ( resource $socket )

socket: 使用socket_create創建的socket資源

socket_write

TODO : 將指定的數據發送到 對應的 socket 管道
函數原型: int socket_write ( resource $socket , string $buffer [, int $length ] )

socket: 使用socket_create創建的socket資源

buffer: 寫入到socket資源中的數據

length: 控制寫入到socket資源中的buffer的長度,如果長度大于buffer的容量,則取buffer的容量

socket_read

TODO : 獲取傳送的數據
函數原型: int socket_read ( resource $socket , int $length )

socket: 使用socket_create創建的socket資源

length: socket資源中的buffer的長度

socket_close

TODO : 關閉 socket 資源
函數原型: void socket_close ( resource $socket )

socket: socket_accept或者socket_create產生的資源,不能用于stream資源的關閉

stream_socket_server

由于創建一個SOCKET的流程總是 socket、bind、listen,所以PHP提供了一個非常方便的函數一次性創建、綁定端口、監聽端口

函數原型: resource stream_socket_server ( string $local_socket [, int $errno [, string $errstr [, int $flags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN [, resource $context ]]]] )

local_socket: 協議名://地址:端口號

errno: 錯誤碼

errstr: 錯誤信息

flags: 只使用該函數的部分功能

context: 使用stream_context_create函數創建的資源流上下文

socket 實現 C/S 交互

基于上面的函數我們可以很方便的去構建 socket 通信程序(在這里我希望讀者能單獨建立一個目錄比如socket 因為后續我們還會建立很多文件)我們先編輯一個服務端程序 server.php,如下:

 ?phpdate_default_timezone_set( Asia/Shanghai error_reporting(E_NOTICE );/* 確保在連接客戶端時不會超時 */set_time_limit(0);$ip = 127.0.0.1 $port = 8090; +------------------------------- * @socket通信整個過程 +------------------------------- * @socket_create * @socket_bind  * @socket_listen * @socket_accept * @socket_read * @socket_write * @socket_close +--------------------------------/*---------------- 以下操作都是手冊上的 -------------------*/if(($sock = socket_create(AF_INET,SOCK_STREAM,SOL_TCP)) 0) { echo socket_create() Why failure is: .socket_strerror($sock). /n if(($ret = socket_bind($sock,$ip,$port)) 0) { echo socket_bind() Why failure is: .socket_strerror($ret). /n if(($ret = socket_listen($sock,4)) 0) { echo socket_listen() Why failure is: .socket_strerror($ret). /n echo Start time: .date( Y-m-d H:i:s ) . PHP_EOL;echo Listening at .$ip. : .$port.PHP_EOL;
if (($msgsock = socket_accept($sock)) 0) { echo socket_accept() failed: reason: . socket_strerror($msgsock) . /n break; } else { # 連接成功輸出 Socket id $i = (int)$msgsock; echo welcome client $i # 向客戶端通信(反饋) $msg = 連接成功!/n socket_write($msgsock, $msg, strlen($msg)); socket_close($msgsock);} while (true);socket_close($sock);?

再編輯一個客戶端程序client.php,如下:

 ?php
* @socket_connect:客戶端發起套接字連接 * @param socket resource $socket 創建的$socket資源 * @param address string SOCK_STREAM IP地址|Unix套接字 * @param port int 端口 * @socket_create:創建并返回一個套接字 * @param domain string AF_INET IPV4 網絡協議 * @param type string SOCK_STREAM 全雙工字節流(可用的套接字類型) * @param protocol string SOL_TCP 具體協議(IPV4下的TCP協議) * @param return 套接字$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket 0) { echo socket_create() failed: reason: . socket_strerror($socket) . /n }else { echo try to connect $ip port: $port .../n
$result = socket_connect($socket, $ip, $port); #socket_connect的返回值應該是boolean值if ($result 0) { echo socket_connect() failed./nReason: ($result) . socket_strerror($result) . /n }else { # 連接成功輸出提示信息 echo connect successfully/n # 向服務端發送數據 socket_write($socket, hello , 1024); # 獲取服務端數據 $result = socket_read($socket, 1024); echo 服務器回傳數據為: . $result;
獨孤九賤(5)_ThinkPHP5視頻教程

ThinkPHP是國內最流行的中文PHP開發框架,也是您Web項目的最佳選擇。《VeVb.com獨孤九賤(5)-ThinkPHP5視頻教程》課程以ThinkPHP5最新版本為例,從最基本的框架常識開始,將...

Peter-Zhu 2017-05-16 12:03:57


獨孤九賤(4)_PHP視頻教程

江湖傳言:PHP是世界上最好的編程語言。真的是這樣嗎?這個梗究竟是從哪來的?學會本課程,你就會明白了。PHP 出品的PHP入門系統教學視頻,完全從初學者的角度出發,絕不玩虛的,一切以實用、有用...

Peter-Zhu 2017-03-20 22:47:17


獨孤九賤(1)_HTML5視頻教程

《VeVb.com原創html5視頻教程》課程特色:php 原創幽默段子系列課程,以惡搞,段子為主題風格的php視頻教程!輕松的教學風格,簡短的教學模式,讓同學們在不知不覺中,學會了HTML知識。...

Peter-Zhu 2017-03-13 10:15:11


ThinkPHP5實戰之[教學管理系統]

本套教程,以一個真實的學校教學管理系統為案例,手把手教會您如何在一張白紙上,從零開始,一步一步的用ThinkPHP5框架快速開發出一個商業項目。

Peter-Zhu 2017-07-24 16:48:56


PHP入門視頻教程之一周學會PHP

所有計算機語言的學習都要從基礎開始,《PHP入門視頻教程之一周學會PHP》不僅是PHP的基礎部分更主要的是PHP語言的核心技術,是學習PHP必須掌握的內容,任何PHP項目的實現都離不開這部分的內容,通...

PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲图片在线综合| 91精品国产综合久久香蕉| 久久久久久国产精品三级玉女聊斋| 欧美乱妇高清无乱码| 国产精品久久久久久久久久久久久久| 国产精品jizz在线观看麻豆| 国产精品一区二区三区在线播放| 午夜精品福利视频| 欧美国产在线视频| 国产欧美日韩免费| 亚洲精品成人av| 伊人久久五月天| 久久男人资源视频| 国产成人精品日本亚洲专区61| 久久久久这里只有精品| 欧美www在线| 欧美最猛性xxxxx(亚洲精品)| 高清欧美性猛交xxxx黑人猛交| 成人欧美一区二区三区黑人孕妇| 亚洲欧美日韩在线高清直播| 日韩中文av在线| 97精品欧美一区二区三区| 国产69精品99久久久久久宅男| 91精品国产91久久久久久不卡| 精品中文字幕乱| 成人免费淫片视频软件| 亚洲精品久久久久中文字幕欢迎你| 精品magnet| 草民午夜欧美限制a级福利片| 久久中文精品视频| 91精品国产精品| 亚州欧美日韩中文视频| 欧美激情欧美激情在线五月| 欧美日韩免费看| 精品性高朝久久久久久久| 国产精品免费网站| 亚洲福利影片在线| 久久国内精品一国内精品| 亚洲国产一区二区三区在线观看| 久久久久久欧美| 欧美极品美女视频网站在线观看免费| 国产精品偷伦视频免费观看国产| 欧美激情精品久久久久久久变态| 国产在线精品成人一区二区三区| 亚洲人成伊人成综合网久久久| 久久av中文字幕| 欧美日韩国产成人在线| 国产精品电影在线观看| 国产精品成人va在线观看| 国产精品欧美日韩一区二区| 一区二区三区 在线观看视| 中文字幕日韩精品有码视频| 国产精品久久综合av爱欲tv| 日韩中文字幕免费看| 久久精品免费播放| 亚洲免费精彩视频| 国产69精品久久久| 亚洲丁香婷深爱综合| 91a在线视频| 国产在线拍揄自揄视频不卡99| 亚洲精品国产精品乱码不99按摩| 亚洲色图五月天| 日本精品久久久久久久| 国产中文字幕91| 久久这里只有精品视频首页| 欧美资源在线观看| 色七七影院综合| 久久久噜久噜久久综合| 最近2019年好看中文字幕视频| 久久天天躁狠狠躁夜夜躁| 欧美日韩国产成人| 欧美激情亚洲激情| 一区二区三区 在线观看视| 97视频在线观看亚洲| 久久久99免费视频| 成人www视频在线观看| 欧美日韩一区二区三区在线免费观看| 91亚洲国产成人精品性色| 成人精品在线视频| 欧美日韩一区二区三区| 97av在线播放| 国产精品视频公开费视频| 久久天天躁狠狠躁夜夜av| 亚洲自拍另类欧美丝袜| 中文字幕国产精品久久| 亚洲缚视频在线观看| 国产福利视频一区二区| 欧美日韩一区二区在线播放| 欧美一区二区三区图| 日韩av影片在线观看| 色偷偷av亚洲男人的天堂| 亚洲石原莉奈一区二区在线观看| 日韩中文在线不卡| 国产日韩欧美在线看| 亚洲国产精品人久久电影| 夜夜嗨av色综合久久久综合网| 91精品国产成人| 国产欧美一区二区白浆黑人| 正在播放亚洲1区| 黄色成人av网| 81精品国产乱码久久久久久| 亚洲精品一区二区网址| 日韩美女免费观看| 91欧美精品午夜性色福利在线| 日韩欧美国产成人| 久久手机精品视频| 大胆人体色综合| 国产成人精品在线| 中文字幕在线国产精品| 日韩在线精品一区| 国产91精品黑色丝袜高跟鞋| 3344国产精品免费看| 成人在线免费观看视视频| 日本最新高清不卡中文字幕| 6080yy精品一区二区三区| 欧美激情乱人伦一区| 久久久在线免费观看| 亚洲国产精品字幕| 在线一区二区日韩| 国产精品网站大全| 色婷婷亚洲mv天堂mv在影片| 成人美女av在线直播| 色樱桃影院亚洲精品影院| 亚洲国产欧美一区二区三区同亚洲| 国产99久久精品一区二区| 国模视频一区二区三区| 亚洲国产精品人人爽夜夜爽| 亚洲国产精品大全| 欧美成人黑人xx视频免费观看| 26uuu久久噜噜噜噜| 亚洲国产精品va在线看黑人动漫| 91精品啪在线观看麻豆免费| 一区二区福利视频| 91亚洲一区精品| xvideos亚洲人网站| 国产精品黄色影片导航在线观看| 中文字幕精品一区久久久久| 国产精品专区一| 久久久视频在线| 91在线免费视频| 国产精品成人v| 一区国产精品视频| 亚洲美女中文字幕| 欧美日韩国产丝袜美女| 日韩精品在线观看视频| 欧美精品在线视频观看| 伊人成人开心激情综合网| 中文字幕欧美精品在线| 日韩高清a**址| 免费av在线一区| 亚洲综合最新在线| 精品视频中文字幕| 亚洲欧美国产视频| 久久精品成人一区二区三区| xxx成人少妇69| 大伊人狠狠躁夜夜躁av一区| 国产精品成久久久久三级| 91超碰中文字幕久久精品| 亚洲嫩模很污视频| 富二代精品短视频| 成人免费高清完整版在线观看| 亚洲国产精品热久久| 精品电影在线观看| 亚洲午夜av电影|