日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

這篇文章主要介紹了用PHP實(shí)現(xiàn)的服務(wù)端socket具體實(shí)例,有對(duì)這方面不懂的同學(xué)可以參考下

實(shí)現(xiàn)方法如下:

使用到的相關(guān)函數(shù): socket_create、socket_set_block、socket_bind、socket_listen、socket_accept、socket_read、socket_write,這些函數(shù)具體參數(shù)說(shuō)明在PHP文檔上寫很詳細(xì),這里就不再贅述,這里只是介紹服務(wù)端如何處理請(qǐng)求。

具體實(shí)例:

//確保在連接客戶端時(shí)不會(huì)超時(shí)
set_time_limit(0);
//設(shè)置IP和端口號(hào)
$address = "127.0.0.1";
$port = 54321;
$socketServer = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) or die("socket_create() fail:" . socket_strerror(socket_last_error()) . "/n");
//設(shè)置為阻塞模式
socket_set_block($socketServer) or die("socket_set_block() fail:" . socket_strerror(socket_last_error()) . "/n");
//綁定端口
$result = socket_bind($socketServer, $address, $port) or die("socket_bind() fail:" . socket_strerror(socket_last_error()) . "/n");
//開始監(jiān)聽
$result = socket_listen($socketServer, 4) or die("socket_listen() fail:" . socket_strerror(socket_last_error()) . "/n");
 
do {
    //接收連接請(qǐng)求并返回一個(gè)子Socket來(lái)處理客戶端和服務(wù)器間的信息
    $sock = socket_accept($socketServer) or die("socket_accept() failed: reason: " . socket_strerror(socket_last_error()) . "/n");
    while($sock){
        //讀取客戶端數(shù)據(jù)
        echo "Read client data \n";
     
        $length = socket_read($sock, 4);
        $length = unpack('i', $length);
        echo "length:$length[1] \n";
     
        $request = socket_read($sock, $length[1]);
        echo "$request:$request \n";     
     
        //數(shù)據(jù)傳送 向客戶端寫入返回結(jié)果
        $msg = "this is response message \n";
        $msgLength = strlen($msg);
        $msgLength = pack('i', $msgLength);
        socket_write($sock, $msgLength);
        socket_write($sock, $msg, strlen($msg)) or die("socket_write() failed: reason: " . socket_strerror(socket_last_error()) ."/n");
        break;
    }
 
} while (true);
socket_close($socketServer);

總結(jié):

在接收到客戶端的請(qǐng)求后,可以結(jié)合PHP的多線程進(jìn)行處理,這里只是簡(jiǎn)單的返回字符串。 各大語(yǔ)言實(shí)現(xiàn)socket通信的方式都是大同小異,在服務(wù)端的流程都是差不多的。在有現(xiàn)成高性能socket通信框架的情況下,建議不要自己去實(shí)現(xiàn),但是得理解框架底層是怎樣實(shí)現(xiàn)的。


分享到:
標(biāo)簽:PHP實(shí)現(xiàn) 服務(wù)端socket 具體實(shí)例
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定