溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php怎么使用socket簡單實現(xiàn)通信功能

發(fā)布時間:2023-03-06 11:38:05 來源:億速云 閱讀:79 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“php怎么使用socket簡單實現(xiàn)通信功能”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“php怎么使用socket簡單實現(xiàn)通信功能”吧!

WebSocket的作用

WebSock其實在平常使用,我們是時常見到的,用于實時通訊,例如我們常用的實時聊天、服務端向客戶端消息推送、也可以實現(xiàn)踢用戶下線功能。實時彈幕功能等等。

什么是握手

為了創(chuàng)建Websocket連接,需要通過瀏覽器發(fā)出請求,之后服務器進行回應,這個過程通常稱為“握手”(handshaking)。

這是比較正式的理解,在接下來使用方式中會在介紹到握手的實際含義。

背景介紹

目標:我希望通過套接字的TCP傳輸來搭建一個服務器,這個服務器的作用是:接受多個客戶端的連接并完成他們的相互通信。比如客戶端A,客戶端B同時連接到服務器S,客戶端A向服務器S發(fā)送消息,服務器S會將A的消息轉(zhuǎn)發(fā)給B,同理,B的消息也可以通過S被轉(zhuǎn)發(fā)到A。這樣就實現(xiàn)了客戶端A和客戶端B之間的相互通信。

本次我們只實現(xiàn)客戶端與服務器之間連接并通信,暫時沒有寫服務器的轉(zhuǎn)發(fā)功能。

IP和PORT

服務端需要有一個IP,TCP通信時,還需要提供一個端口號。

客服端需要有一個IP,TCP通信時,也需要提供一個端口號。

服務端就是負責接收客戶端的信息

客戶端代碼

$PORT = 12345; //與server端口匹配
//創(chuàng)建socket/參數(shù)1:代表IPV4/參數(shù)2:流傳輸/參數(shù)3:TCP/
$client = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
//向指定地址/端口發(fā)出連接請求,連接結(jié)果返回到resule/127.0.0.1指本地IP
$result = socket_connect($client, "127.0.0.1", $PORT); 
//這里我們簡單的對連接結(jié)果進行響應/為了Debug方便
if($result == false){  
    echo "ERROR CONNECT\n"; 
    die();
} else {
    echo "CONNECTED\n";
}
//建立將要發(fā)送的消息
$data = "linrux Hello World\n"; 
//將消息發(fā)送出去
socket_write($client, $data); 
 //關閉socket
socket_close($client);

服務端代碼

//進入死循環(huán),一直接收客戶端發(fā)送信息
while(true){
//創(chuàng)建socket/參數(shù)解釋同客服端
$server = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); 
//綁定端口和IP/0.0.0.0表示允許任意地址發(fā)起連接/12345表示允許12345端口號進行連接
socket_bind($server, "0.0.0.0", 12345); 
//進入監(jiān)聽
socket_listen($server); 
//接收請求并建立連接
$connection = socket_accept($server); 
//接收數(shù)據(jù)
$data = socket_read($connection, 1024); 
echo $data; 
}
//關閉socket 
#socket_close($server);

客戶端發(fā)送信息

php怎么使用socket簡單實現(xiàn)通信功能

服務端接收消息

php怎么使用socket簡單實現(xiàn)通信功能

感謝各位的閱讀,以上就是“php怎么使用socket簡單實現(xiàn)通信功能”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對php怎么使用socket簡單實現(xiàn)通信功能這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI