欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

php使用socket簡(jiǎn)單實(shí)現(xiàn)通信功能

 更新時(shí)間:2023年03月06日 10:32:24   作者:小信啊啊  
socket只不過是一個(gè)數(shù)據(jù)結(jié)構(gòu)。使用這個(gè)socket數(shù)據(jù)結(jié)構(gòu)去開始一個(gè)客戶端和服務(wù)器之間的會(huì)話。服務(wù)器是一直在監(jiān)聽準(zhǔn)備產(chǎn)生一個(gè)新的會(huì)話。當(dāng)一個(gè)客戶端連接服務(wù)器,它就打開服務(wù)器正在進(jìn)行監(jiān)聽的一個(gè)端口進(jìn)行會(huì)話

WebSocket的作用

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

什么是握手

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

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

背景介紹

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

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

IP和PORT

服務(wù)端需要有一個(gè)IP,TCP通信時(shí),還需要提供一個(gè)端口號(hào)。

客服端需要有一個(gè)IP,TCP通信時(shí),也需要提供一個(gè)端口號(hào)。

服務(wù)端就是負(fù)責(zé)接收客戶端的信息

客戶端代碼

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

服務(wù)端代碼

//進(jìn)入死循環(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端口號(hào)進(jìn)行連接
socket_bind($server, "0.0.0.0", 12345); 
//進(jìn)入監(jiān)聽
socket_listen($server); 
//接收請(qǐng)求并建立連接
$connection = socket_accept($server); 
//接收數(shù)據(jù)
$data = socket_read($connection, 1024); 
echo $data; 
}
//關(guān)閉socket 
#socket_close($server);

客戶端發(fā)送信息

服務(wù)端接收消息

到此這篇關(guān)于php使用socket簡(jiǎn)單實(shí)現(xiàn)通信功能的文章就介紹到這了,更多相關(guān)php socket內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論