php使用socket簡單實(shí)現(xiàn)通信功能
WebSocket的作用
WebSock其實(shí)在平常使用,我們是時常見到的,用于實(shí)時通訊,例如我們常用的實(shí)時聊天、服務(wù)端向客戶端消息推送、也可以實(shí)現(xiàn)踢用戶下線功能。實(shí)時彈幕功能等等。
什么是握手
為了創(chuàng)建Websocket連接,需要通過瀏覽器發(fā)出請求,之后服務(wù)器進(jìn)行回應(yīng),這個過程通常稱為“握手”(handshaking)。
這是比較正式的理解,在接下來使用方式中會在介紹到握手的實(shí)際含義。
背景介紹
目標(biāo):我希望通過套接字的TCP傳輸來搭建一個服務(wù)器,這個服務(wù)器的作用是:接受多個客戶端的連接并完成他們的相互通信。比如客戶端A,客戶端B同時連接到服務(wù)器S,客戶端A向服務(wù)器S發(fā)送消息,服務(wù)器S會將A的消息轉(zhuǎn)發(fā)給B,同理,B的消息也可以通過S被轉(zhuǎn)發(fā)到A。這樣就實(shí)現(xiàn)了客戶端A和客戶端B之間的相互通信。
本次我們只實(shí)現(xiàn)客戶端與服務(wù)器之間連接并通信,暫時沒有寫服務(wù)器的轉(zhuǎn)發(fā)功能。
IP和PORT
服務(wù)端需要有一個IP,TCP通信時,還需要提供一個端口號。
客服端需要有一個IP,TCP通信時,也需要提供一個端口號。
服務(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ā)出連接請求,連接結(jié)果返回到resule/127.0.0.1指本地IP $result = socket_connect($client, "127.0.0.1", $PORT); //這里我們簡單的對連接結(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端口號進(jìn)行連接 socket_bind($server, "0.0.0.0", 12345); //進(jìn)入監(jiān)聽 socket_listen($server); //接收請求并建立連接 $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簡單實(shí)現(xiàn)通信功能的文章就介紹到這了,更多相關(guān)php socket內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
PHP中$_SERVER的詳細(xì)參數(shù)與說明介紹
PHP編程中經(jīng)常需要用到一些服務(wù)器的一些資料,特把$_SERVER的詳細(xì)參數(shù)整理下,方便以后使用2013-10-10推薦學(xué)習(xí)php sesson的朋友必看PHP會話(Session)使用入門
對比起 Cookie,Session 是存儲在服務(wù)器端的會話,相對安全,并且不像 Cookie 那樣有存儲長度限制,本文簡單介紹 Session 的使用。2008-08-08PHP數(shù)據(jù)流應(yīng)用的一個簡單實(shí)例
PHP數(shù)據(jù)流應(yīng)用的一個簡單實(shí)例代碼,需要的朋友可以參考下2012-09-09php魔術(shù)方法與魔術(shù)變量、內(nèi)置方法與內(nèi)置變量的深入分析
本篇文章是對php魔術(shù)方法與魔術(shù)變量、內(nèi)置方法與內(nèi)置變量進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06php讀取csv文件后,uft8 bom導(dǎo)致在頁面上顯示出現(xiàn)問題的解決方法
以下是對php讀取csv文件后,uft8 bom導(dǎo)致在頁面上顯示出現(xiàn)問題的解決方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下2013-08-08PHP導(dǎo)出EXCEL快速開發(fā)指南--PHPEXCEL的使用詳解
本篇文章是對PHPEXCEL的使用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06利用php獲取服務(wù)器時間的實(shí)現(xiàn)代碼
本篇文章是對使用php獲取服務(wù)器時間的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06