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

首頁 > 編程 > PHP > 正文

php中主要的socket函數語法和使用實例詳解

2020-03-22 18:58:46
字體:
來源:轉載
供稿:網友
在實際開發中,如果想要創建基于socket的html' target='_blank'>應用程序,就需要詳細了解socket的操作方法,要是像了解并熟練使用這些操作方法,就需要先了解php中的各種socket函數。在上一章節中我們詳細介紹了php中的socket是什么?這里就介紹一下php中的socket函數。socket函數在php中有幾十個之多,這里列舉一些主要的socket函數來介紹一下。

它們的語法格式參數如下:

1. socket_create

socket_create ( int $domain , int $type , int $protocol )

此函數用于創建一個socket,它有三個參數,返回值是一個句柄(資源)。

$domain 指定創建socket時使用的通信協議族,其可選的值為:

AF_INET: 基于IPv4的Internet協議

AF_INET6:基于IPv6的Internet協議

AF_UNIX:UNIX本地通信協議

$type 指定socket通信的交互類型,其可選的值為:

SOCK_STREAM:提供序列化的、可靠的、全雙工的、基于連接的字節流傳輸,支持TCP

SOCK_DGRAM:提供數據報式的、無連接的、固定最大長度的、自動尋址功能的傳輸,支持UDP

SOCK_SEQPACKET:提供序列化的、可靠的、雙通道的、基于連接的數據報傳輸

SOCK_RAW:提供原始的網絡訪問協議,可手工構建特殊協議類型的套接字,支持ICMP請求(如 ping)

SOCK_RDM:提供可靠的數據報傳輸,無法保證順序

$protocol 指定socket使用哪種具體的傳輸協議,包括ICMP、UDP、TCP,常量SOL_UDP對應UDP,常量SOL_TCP對應常量TCP。

2. socket_bind

socket_bind ( resource $socket , string $address [, int $port = 0 ] )

此函數用于將IP地址和端口綁定到socket_create創建的句柄中,有三個參數,返回布爾值。

$socket 是必選參數,代表socket_create函數創建的句柄

$address 是必選參數,代表要綁定的IP地址

$port 是可選參數,代表要綁定的端口號,指定哪個端口用來監聽socket連接,當socket_create函數的第一個參數為AF_INET時,需要指定這個參數。

3. socket_listen

socket_listen ( resource $socket [, int $backlog = 0 ] )

該函數用于監聽即將接入的socket連接,僅當socket的交互類型為SOCK_STREAM或SOCK_SEQPACKET時可

用,它有兩個參數,返回布爾值。

$socket 是必選參數,代表socket_create函數創建的句柄(且已綁定了主機)

$backlog 是可選參數,表示隊列中等候處理的(允許積壓的)最大連接數。

4. socket_set_block

socket_set_block ( resource $socket )

該函數用于將socket句柄設置為阻塞模式,只有一個必選參數,返回布爾值。它可以將非阻塞模式的socket轉換為阻塞模式。

當在一個阻塞模式的socket中執行某種操作(receive、send、connect、accept等)時,腳本將暫停執行,直到它收到一個信號或它完成了該操作。

$socket 是必選參數,代表一個有效的socket句柄(被socket_create或socket_accept創建的)。

說明一下阻塞模式和非阻塞模式的區別:

非阻塞是指函數操作在不能立刻得到結果之前,不會阻塞當前的線程,而會立即返回。而阻塞是指干不完就不準回來,必須得到對方的回應后才能繼續下一步操作。特別是當用戶比較多時,設置成非阻塞是很必要的。如果是阻塞模式,若兩個客戶端同時連接上,服務器端在處理一個客戶端請求時,另外一個客戶端的請求就會被阻塞,只有等到前一個客戶端的事情處理完了之后,后一個客戶端的請求才會被響應。

5. socket_write

socket_write ( resource $socket , string $buffer [, int $length = 0 ] )

該函數用于向socket中寫入指定大小的緩沖數據,有三個參數,返回寫入的數據的字節數。

$socket 是必選參數,代表一個有效的socket句柄。

$buffer 是必選參數,指定要寫入的字符串數據。

$length 是可選參數,指定輪流寫入socket中的數據的字節數,如果它的值大于$buffer的字節數,它會靜默地截取至$buffer的字節數長度。

6. socket_read

socket_read ( resource $socket , int $length [, int $type = PHP_BINARY_READ ] )

該函數用于從socket中讀取指定字節長度的數據,有三個參數,返回讀取的字符串數據。

$socket 是必選參數,代表一個有效的socket句柄。
$length 是必選參數,指定讀取的字節長度。

$type 是可選參數,默認值為PHP_BINARY_READ,即安全讀取二進制數據;另一個可選的值為PHP_NORMAL_READ,表示當遇到 /r 或 /n 時,停止讀取。

7. pfsockopen

pfsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )

該函數用于實現一個持久的socket連接,即長連接,返回一個句柄。它與 fsockopen 的區別在于,pfsockopen 建立的連接,在腳本執行完畢后,并不會斷開。

8. socket_set_option

socket_set_option ( resource$socket , int$level , int$optname , mixed$optval )

該函數用于設置socket的控制選項,有四個參數,返回布爾值。

$socket 是必選參數,代表一個有效的socket句柄。

$level 是必選參數,指定option起作用的協議級別,一般取常量 SOL_SOCKET。

$optname 是必選參數,指定要控制的選項名稱。

$optval 是必選參數,指定選項的值。

9. socket_last_error

socket_last_error ([ resource$socket ] )

該函數用于獲取任何socket函數產生的最后錯誤代號,返回值為整型。

10. socket_strerror

socket_strerror ( int $errno )

該函數用于獲取錯誤代號代表的錯誤描述,返回值為字符串。

以上所有的函數都是PHP中關于socket的,使用這些函數,你必須把你的socket打開,如果你沒有打開,請編輯你的php.ini文件,去掉下面這行前面的注釋

extension=php_sockets.dll

如果你不知道你的socket是否打開,那么你可以使用phpinfo()函數來確定socket是否打開。

下面通過創建一個服務端和客戶端的例子來說明這些函數的用法:

  1. 服務器端

<?php//確保在連接客戶端時不會超時set_time_limit(0);$ip = '127.0.0.1';$port = 1935;/* +------------------------------- *    @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() 失敗的原因是:".socket_strerror($sock)."/n";}if(($ret = socket_bind($sock,$ip,$port)) < 0) {    echo "socket_bind() 失敗的原因是:".socket_strerror($ret)."/n";}if(($ret = socket_listen($sock,4)) < 0) {    echo "socket_listen() 失敗的原因是:".socket_strerror($ret)."/n";}$count = 0;do {    if (($msgsock = socket_accept($sock)) < 0) {        echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "/n";        break;    } else {                //發到客戶端        $msg ="測試成功!/n";        socket_write($msgsock, $msg, strlen($msg));                echo "測試成功了啊/n";        $buf = socket_read($msgsock,8192);                        $talkback = "收到的信息:$buf/n";        echo $talkback;                if(++$count >= 5){            break;        };                }    //echo $buf;    socket_close($msgsock);} while (true);socket_close($sock);?>

2. 客戶端

<?phperror_reporting(E_ALL);set_time_limit(0);echo "<h2>TCP/IP Connection</h2>/n";$port = 1935;$ip = "127.0.0.1";/* +------------------------------- *    @socket連接整個過程 +------------------------------- *    @socket_create *    @socket_connect *    @socket_write *    @socket_read *    @socket_close +-------------------------------- */$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);if ($socket < 0) {    echo "socket_create() failed: reason: " . socket_strerror($socket) . "/n";}else {    echo "OK./n";}echo "試圖連接 '$ip' 端口 '$port'.../n";$result = socket_connect($socket, $ip, $port);if ($result < 0) {    echo "socket_connect() failed./nReason: ($result) " . socket_strerror($result) . "/n";}else {    echo "連接OK/n";}$in = "Ho/r/n";$in .= "first blood/r/n";$out = '';if(!socket_write($socket, $in, strlen($in))) {    echo "socket_write() failed: reason: " . socket_strerror($socket) . "/n";}else {    echo "發送到服務器信息成功!/n";    echo "發送的內容為:<font color='red'>$in</font> <br>";}while($out = socket_read($socket, 8192)) {    echo "接收服務器回傳信息成功!/n";    echo "接受的內容為:",$out;}echo "關閉SOCKET.../n";socket_close($socket);echo "關閉OK/n";?>

【相關教程推薦】

1. 《VeVb.com獨孤九賤(4)-php視頻教程》

2. php編程從入門到精通全套教程

以上就是php中主要的socket函數語法和使用實例詳解的詳細內容,更多請關注 其它相關文章!

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极度另类性三渗透| 欧洲成人在线观看| 日韩中文字幕精品视频| 欧美一区二区三区精品电影| 中文字幕精品av| 亚洲天堂男人的天堂| 久久99久国产精品黄毛片入口| 亚洲免费视频观看| 66m—66摸成人免费视频| 亚洲人成伊人成综合网久久久| 成人www视频在线观看| 久久久久久久一区二区| 久久琪琪电影院| 91超碰中文字幕久久精品| 欧美大胆a视频| 亚洲淫片在线视频| 97国产精品免费视频| 日韩免费高清在线观看| 中文字幕自拍vr一区二区三区| 欧美日韩爱爱视频| 亚洲va欧美va国产综合剧情| y97精品国产97久久久久久| 国产精品第一视频| 久久这里只有精品99| 精品一区精品二区| 日韩电视剧免费观看网站| 色偷偷偷亚洲综合网另类| 午夜精品久久久久久久白皮肤| 国产精品欧美一区二区三区奶水| 91精品国产色综合久久不卡98| 国产精品高清在线| 日韩视频中文字幕| 中文字幕最新精品| 成人免费网站在线| 欧美亚洲日本黄色| 久久夜色精品亚洲噜噜国产mv| 欧洲s码亚洲m码精品一区| 少妇久久久久久| 欧美激情视频免费观看| 欧美在线视频观看免费网站| 中文字幕最新精品| 国内精品久久久久| 国产午夜精品免费一区二区三区| 成人欧美一区二区三区在线湿哒哒| xvideos成人免费中文版| 在线观看视频99| 欧美日韩亚洲一区二区三区| 在线观看国产精品日韩av| 日韩免费av在线| 久久人体大胆视频| 国产精品嫩草影院一区二区| 久久精品国产欧美激情| 亚洲精品免费一区二区三区| 欧美性xxxxxxxxx| 九九九热精品免费视频观看网站| 欧美精品videosex性欧美| 国产免费一区二区三区在线观看| 欧美在线免费观看| 精品中文字幕久久久久久| 国产日韩换脸av一区在线观看| 国产精品亚洲一区二区三区| 黄色精品在线看| 性欧美在线看片a免费观看| 91午夜理伦私人影院| 中文字幕日韩欧美| 精品中文字幕视频| 日韩亚洲成人av在线| 欧洲亚洲免费视频| 亚洲欧美日韩中文在线制服| 色综合色综合久久综合频道88| 97视频com| 国产精品高清网站| 日韩精品福利在线| 国产在线拍偷自揄拍精品| 日韩亚洲一区二区| 国产97人人超碰caoprom| 国产精品久久久久久久久久| 中文字幕9999| 国产剧情日韩欧美| 日韩欧美在线视频免费观看| 精品欧美aⅴ在线网站| 97国产suv精品一区二区62| 久久久久亚洲精品成人网小说| 日韩美女视频免费在线观看| 久久久久国色av免费观看性色| 美女福利精品视频| 亚洲国产日韩欧美综合久久| 日韩精品免费在线播放| 色yeye香蕉凹凸一区二区av| 92版电视剧仙鹤神针在线观看| 亚洲精品中文字幕女同| 国产成人久久久| 中文字幕不卡av| 国产一区视频在线| 日韩一区二区三区国产| 日韩暖暖在线视频| 久久亚洲综合国产精品99麻豆精品福利| 欧美一区二区大胆人体摄影专业网站| 欧美黄色三级网站| 欧美专区在线视频| 欧美日韩中文在线观看| 国产一区视频在线| 亚洲国产精品成人精品| 欧美性xxxx18| 日本不卡免费高清视频| 欧美视频在线视频| 一级做a爰片久久毛片美女图片| 国产视频在线一区二区| 欧美视频在线观看免费网址| 97久久精品在线| 亚洲黄页网在线观看| 亚洲激情小视频| 一本一道久久a久久精品逆3p| 亚洲成人黄色网址| 欧美丝袜一区二区| 亚洲情综合五月天| 精品亚洲国产成av人片传媒| 亚洲精品欧美日韩| 欧美日韩日本国产| 国产一区二区日韩精品欧美精品| 欧美一级大片在线免费观看| 精品亚洲国产成av人片传媒| 国产亚洲视频在线| 91大神在线播放精品| 欧美一级免费看| 在线视频中文亚洲| 亚洲激情免费观看| 国产一区二区三区日韩欧美| 久久久久久久色| 欧美日韩亚洲一区二区| 国产免费一区二区三区在线观看| 色樱桃影院亚洲精品影院| 国产精品福利在线| 中文字幕亚洲情99在线| 在线播放日韩专区| 亚洲欧美激情四射在线日| 欧美精品在线极品| 国产91在线播放| 日韩成人av在线播放| 国产精品久久久久久久久久久久久久| 国产精品成人免费电影| 九九热视频这里只有精品| 国产成人精品综合| 91精品视频在线免费观看| 红桃av永久久久| 成人在线激情视频| 久久综合色88| 国产精品视频公开费视频| 国产精品麻豆va在线播放| 国产精品免费一区二区三区都可以| 国产精品爽爽爽爽爽爽在线观看| 中文字幕综合一区| 亚洲欧美三级伦理| 亚洲综合自拍一区| 国产九九精品视频| 亚洲国产精品女人久久久| 国产手机视频精品| 91久热免费在线视频| 成人黄色免费网站在线观看| 亚洲欧美国产一区二区三区| 裸体女人亚洲精品一区| 国产女精品视频网站免费| 日韩在线视频二区| 色综合视频一区中文字幕|