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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php socket(服务端与客户端)demo

發布時間:2024/8/26 php 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php socket(服务端与客户端)demo 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

php socket(服務端與客戶端)demo完整演示:

環境是:【phpstydy,PHP版本7.3.4nts】,一定要開啟【sockets】服務。

?服務器【index.php】(源碼復制即可):

<?php //創建服務端的socket套接流,net協議為IPv4,protocol協議為TCP $socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/*綁定接收的套接流主機和端口,與客戶端相對應*/if(socket_bind($socket,'127.0.0.1',8888) == false){echo 'server bind fail:'.socket_strerror(socket_last_error());/*這里的127.0.0.1是在本地主機測試,你如果有多臺電腦,可以寫IP地址*/}//監聽套接流if(socket_listen($socket,4)==false){echo 'server listen fail:'.socket_strerror(socket_last_error());} //讓服務器無限獲取客戶端傳過來的信息 do{/*接收客戶端傳過來的信息*/$accept_resource = socket_accept($socket);/*socket_accept的作用就是接受socket_bind()所綁定的主機發過來的套接流*/if($accept_resource !== false){/*讀取客戶端傳過來的資源,并轉化為字符串*/$string = socket_read($accept_resource,1024);/*socket_read的作用就是讀出socket_accept()的資源并把它轉化為字符串*/echo 'server receive is :'.$string.PHP_EOL;//PHP_EOL為php的換行預定義常量if($string != false){$return_client = 'server receive is : '.$string.PHP_EOL;/*向socket_accept的套接流寫入信息,也就是回饋信息給socket_bind()所綁定的主機客戶端*/socket_write($accept_resource,$return_client,strlen($return_client));/*socket_write的作用是向socket_create的套接流寫入信息,或者向socket_accept的套接流寫入信息*/}else{echo 'socket_read is fail';}/*socket_close的作用是關閉socket_create()或者socket_accept()所建立的套接流*/socket_close($accept_resource);} }while(true); socket_close($socket);

客戶端【client.php】(源碼復制即可):

<?php//創建一個socket套接流$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);/****************設置socket連接選項,這兩個步驟你可以省略*************///接收套接流的最大超時時間1秒,后面是微秒單位超時時間,設置為零,表示不管它socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array("sec" => 1, "usec" => 0));//發送套接流的最大超時時間為6秒socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array("sec" => 6, "usec" => 0));/****************設置socket連接選項,這兩個步驟你可以省略*************///連接服務端的套接流,這一步就是使客戶端與服務器端的套接流建立聯系if(socket_connect($socket,'127.0.0.1',8888) == false){echo 'connect fail massege:'.socket_strerror(socket_last_error());}else{$message = 'l love you :socket';//轉為GBK編碼,處理亂碼問題,這要看你的編碼情況而定,每個人的編碼都不同$message = mb_convert_encoding($message,'GBK','UTF-8');//向服務端寫入字符串信息if(socket_write($socket,$message,strlen($message)) == false){echo 'fail to write'.socket_strerror(socket_last_error());}else{echo 'client write success'.PHP_EOL;//讀取服務端返回來的套接流信息while($callback = socket_read($socket,1024)){echo 'server return message is:'.PHP_EOL.$callback;}}}socket_close($socket);//工作完畢,關閉套接流

注:需要配置【PHP】的環境變量【php環境變量配置_紅目香薰-CSDN博客】。

環境變量設置自己根據自己的服務路徑找——【D:\phpstudy_pro\Extensions\php\php7.3.4nts】

?我用的win7測試的,就不演示環境變量測試了。

?執行效果如上。

注:服務器只能用【cli】的方式啟動,別想著用【H5】啊,不行的。

總結

以上是生活随笔為你收集整理的php socket(服务端与客户端)demo的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。