4種客戶端連接服務器的方式介紹
四種客戶端連接方式:瀏覽器連接
server.php: <?php //創建Server對象,監聽 10.211.55.15:9501端口 $serv = new swoole_server("10.211.55.15", 9501); // 10.211.55.15 是我們Swoole服務器地址 //監聽數據接收事件 $serv->on('receive',?function?($serv,?$fd,?$from_id,?$data)?{ ????echo?$data;?//打印?接收到的數據 ????$serv->send($fd,?"I?am?swoole");?//發送字符串給客戶端 ????$serv->close($fd);?//?注意:官方并不建議在這里關閉掉 }); //啟動服務器 $serv->start();
仔細看上面代碼,創建服務之后,我們監聽了數據接收事件,打印接收到的數據,然后輸出一個I am swoole字符串。
同樣的執行server.php,終端命令行會“等待狀態”:
php?server.php
然后我們使用火狐瀏覽器作為客戶端,請求Swoole服務器:http://10.211.55.15:9501/
此時(服務器)終端下會輸出類似如下:
GET?/favicon.ico?HTTP/1.1 Host:?10.211.55.15:9501 User-Agent:?Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10.13;?rv:57.0)?Gecko/20100101?Firefox/57.0 Accept:?*/* Accept-Language:?zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding:?gzip,?deflate Connection:?keep-alive
這正是一段HTTP協議內容。
為什么可以通過瀏覽器訪問?
瀏覽器可以理解為一個socket客戶端,通過HTTP協議的交互完成傳輸過程。
HTTP協議(應用層)是建立在TCP協議(傳輸層)基礎之上,瀏覽器發出一次請求,會按照HTTP協議的規定發送“字符串”,請求完成后則端口連接。
上面我們通過瀏覽器的方式來訪問Swoole服務器,可能部分瀏覽器不行,因我們只是簡單的輸出一個字符串,并沒有按照HTTP協議來完成。
四種客戶端連接方式:telnet
首先要稍微修改一下我們服務端代碼(server.php),注釋掉下面這行:
$serv->close($fd);?//?注意:官方并不建議在這里關閉掉
如果沒有安裝telnet,使用如下命令安裝:
yum?install?telnet?-y
操作方法:
telnet?10.211.55.15?9501 #連接后,敲擊鍵盤`ctrl+]`鍵,就可以發送消息了, #比如我們輸入 hello #會緊接著一行顯示 I?am?swoole
四種客戶端連接方式:自己寫socket
首先要確定是否安裝了socket擴展。
使用原生的php代碼編寫一個客戶端client.php:
$socket?=?socket_create(AF_INET,SOCK_STREAM,SOL_TCP); socket_connect($socket,"10.211.55.15",?9501); socket_write($socket,"hello?swoole"); //?讀 $out?=?socket_read($socket,1024); echo?$out; socket_close($socket);
四種客戶端連接方式:Swoole官方提供的客戶端
https://wiki.swoole.com/wiki/page/p-client.html
<?php $client = new swoole_client(SWOOLE_SOCK_TCP); if (!$client->connect("10.211.55.15",?9501,?-1)) { ????exit("connect?failed.?Error:?{$client->errCode}n"); } $client->send("hello?worldn"); echo?$client->recv();?//打印?接收到的數據 $client->close();
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END
喜歡就支持一下吧
相關推薦