日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

php的socket通信

發(fā)布時間:2024/9/30 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php的socket通信 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

    • 1.socket是什么?
    • 2.代碼:
    • 3.運(yùn)行結(jié)果:

TCP/IP:傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個工業(yè)標(biāo)準(zhǔn)的協(xié)議集,它是為廣域網(wǎng)(WANs)設(shè)計的
UDP:用戶數(shù)據(jù)報協(xié)議,是與tcp相對應(yīng)的協(xié)議。他是屬于TCP/IP協(xié)議的一種

1.socket是什么?

socket是應(yīng)用層和TCP/IP協(xié)議族通信的中間軟件抽象層
它是一組接口
在設(shè)計模式中,Socket其實(shí)就是一個門面模式。是一組接口,把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面
對用戶來說,一組簡單的就口就是全部,讓socket去組織數(shù)據(jù),以符合指定的協(xié)議

2.代碼:

server.php

<?phpset_time_limit(0); $ip = '127.0.0.1'; $port = 8888;//1.初始化socket $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);//創(chuàng)建服務(wù)端的socket套接流,net協(xié)議為IPv4,protocol協(xié)議為TCP//2.端口綁定 if (socket_bind($socket,$ip,$port) == false)/*綁定接收的套接流主機(jī)和端口,與客戶端相對應(yīng)*/ {echo "server bind fail:".socket_strerror(socket_last_error()); }//3.對端口進(jìn)行監(jiān)聽 if (socket_listen($socket,4) == false) {echo "server listen fail:".socket_strerror(socket_last_error()); }//4.調(diào)用accept阻塞,等待客戶端連接 do{$accept_resource = socket_accept($socket);/*socket_accept的作用就是接受socket_bind()所綁定的主機(jī)發(fā)過來的套接流*/if ($accept_resource!==false){//5.接受客戶端請求數(shù)據(jù)$string = socket_read($accept_resource,1024);/*socket_read的作用就是讀出socket_accept()的資源并把它轉(zhuǎn)化為字符串*/echo "Receive:".$string.PHP_EOL;if ($string!==false){$return_client = "消息已經(jīng)接收:".date("Y-m-d H:i:s").PHP_EOL;//6.回應(yīng)數(shù)據(jù)發(fā)送給客戶端socket_write($accept_resource,$return_client,strlen($string));/*socket_write的作用是向socket_create的套接流寫入信息,或者向socket_accept的套接流寫入信息*/}else{echo "socket_read is fail";}} }while(true); socket_close($socket);

client.php

<?php //初始化一個Socket 創(chuàng)建一個socket套接流 $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP); //接收套接流的最大超時時間1秒,后面是微秒單位超時時間,設(shè)置為零,表示不管它 socket_set_option($socket,SOL_SOCKET,SO_RCVTIMEO,array("sec"=>1,"usec"=>0)); //發(fā)送套接流的最大超時時間為6秒 socket_set_option($socket,SOL_SOCKET,SO_SNDTIMEO,array("sec"=>6,"usec"=>0)); //連接服務(wù)端的套接流,這一步就是使客戶端與服務(wù)器端的套接流建立聯(lián)系 if (socket_connect($socket,'127.0.0.1',8888) == false) {echo "connect fail message:".socket_strerror(socket_last_error()); }else{$message = "hello,server";$message = mb_convert_encoding($message,'GBK','UTF-8');//向服務(wù)端寫入字符串信息if (socket_write($socket,$message,strlen($message)) == false){echo 'fail to write'.socket_strerror(socket_last_error());}//讀取服務(wù)端返回來的套接流信息while ($callback = socket_read($socket,1024)){echo 'server return message is:'.$callback.PHP_EOL;} }socket_close($socket);

3.運(yùn)行結(jié)果:

總結(jié)

以上是生活随笔為你收集整理的php的socket通信的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。