swoole創(chuàng)建tcp服務(wù)器

tcp服務(wù)官方文檔

swoole tcp

tcp server

<?php

/**
 * Class Tcp
 * Tcp服務(wù)
 */
class Tcp {
    CONST HOST = "0.0.0.0";
    CONST PORT = 9501;

    public $tcp = null;
    public function __construct()
    {
        $this->tcp = new swoole_server(self::HOST, self::PORT);
        $this->tcp->set(
            [
                'worker_num' => 6,
                'max_request' => 10000,
            ]
        );
        $this->tcp->on('connect', [$this, 'onConnect']);
        $this->tcp->on('receive', [$this, 'onReceive']);
        $this->tcp->on('close', [$this, 'onClose']);

        $this->tcp->start();
    }

    /**
     * 監(jiān)聽連接事件
     * @param $tcp
     * @param $fd
     * @param $reactor_id
     */
    public function onConnect($tcp, $fd, $reactorId)
    {
        echo "客戶端id:{$fd}連接成功,來自于線程{$reactorId}\n";
    }

    /**
     * 監(jiān)聽接收事件
     * @param $tcp
     * @param $fd
     * @param $reactor_id
     * @param $data
     */
    public function onReceive($tcp, $fd, $reactorId, $data)
    {
        echo "接收到了客戶端id: {$fd} 發(fā)送的數(shù)據(jù):{$data}";
        $sendData = "服務(wù)端將客戶端發(fā)送的數(shù)據(jù)原樣返回:{$data}";
        $tcp->send($fd, $sendData);
    }

    /**
     * 監(jiān)聽關(guān)閉事件
     * @param $tcp
     * @param $fd
     */
    public function onClose($tcp, $fd)
    {
        echo "客戶端id: {$fd} 關(guān)閉了連接\n";
    }
}

$tcp = new Tcp();

開啟服務(wù):

?  server [master] ? php tcp.php
[2018-04-30 14:41:23 @69315.0]  TRACE   Create swoole_server host=0.0.0.0, port=9501, mode=3, type=1

使用telnet連接

?  client [master] ? telnet 127.0.0.1 9501
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
hello swoole
服務(wù)端將客戶端發(fā)送的數(shù)據(jù)原樣返回:hello swoole

自定義 tcp client

tcp_client.php

<?php

/**
 * Class TcpClient
 * Tcp客戶端
 */
class TcpClient
{
    const HOST = "127.0.0.1";
    const PORT = 9501;

    public $client = null;

    public function __construct()
    {
        $this->client = new swoole_client(SWOOLE_SOCK_TCP);
        $this->connect();
    }

    public function connect()
    {
        if(!$this->client->connect(self::HOST, self::PORT)) {
            echo '連接失敗';
            exit;
        }
    }

    public function send()
    {
        fwrite(STDOUT, '請輸入消息:');
        $msg = trim(fgets(STDIN));
        $this->client->send($msg);
    }

    public function receive()
    {
        $result = $this->client->recv();
        echo $result . "\n";
    }
}

$client = new TcpClient();
$client->send();
$client->receive();

執(zhí)行結(jié)果:

?  client [master] ? php tcp_client.php
請輸入消息:swoole  tcp 客戶端測試
服務(wù)端將客戶端發(fā)送的數(shù)據(jù)原樣返回:swoole tcp 客戶端測試
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锻霎,一起剝皮案震驚了整個濱河市捧灰,隨后出現(xiàn)的幾起案子坪仇,更是在濱河造成了極大的恐慌,老刑警劉巖蜕企,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異隔心,居然都是意外死亡沮榜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門郊愧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來朴译,“玉大人井佑,你說我怎么就攤上這事∶呤伲” “怎么了躬翁?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盯拱。 經(jīng)常有香客問我盒发,道長,這世上最難降的妖魔是什么狡逢? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任宁舰,我火速辦了婚禮,結(jié)果婚禮上奢浑,老公的妹妹穿的比我還像新娘蛮艰。我一直安慰自己,他們只是感情好殷费,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布印荔。 她就那樣靜靜地躺著,像睡著了一般详羡。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嘿悬,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天实柠,我揣著相機與錄音,去河邊找鬼善涨。 笑死窒盐,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的钢拧。 我是一名探鬼主播蟹漓,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼源内!你這毒婦竟也來了葡粒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤膜钓,失蹤者是張志新(化名)和其女友劉穎嗽交,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體颂斜,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡夫壁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沃疮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片盒让。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡梅肤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出邑茄,到底是詐尸還是另有隱情姨蝴,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布撩扒,位于F島的核電站似扔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搓谆。R本人自食惡果不足惜炒辉,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泉手。 院中可真熱鬧黔寇,春花似錦、人聲如沸斩萌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽颊郎。三九已至憋飞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間姆吭,已是汗流浹背榛做。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留内狸,地道東北人检眯。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像昆淡,于是被迫代替她去往敵國和親锰瘸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理昂灵,服務(wù)發(fā)現(xiàn)避凝,斷路器,智...
    卡卡羅2017閱讀 134,711評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,306評論 25 707
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,859評論 6 342
  • 很多年前佩谣,高中歷史老師在講臺上對我們說:大學(xué)文憑,會決定你畢業(yè)后十年的平臺实蓬。高考即使是到坎茸俭,也得咬著牙邁過去吊履。當時...
    先生文字工作坊閱讀 318評論 1 1
  • 轉(zhuǎn)眼已至深秋,今秋實屬寒秋调鬓。冬未立艇炎,氣溫已然寒氣逼人。驟然的溫度跌宕腾窝,不免讓人生出急景凋年缀踪,倉皇失措之感。翻了翻去...
    西風瀟閱讀 336評論 0 3