美文网首页
Swoole TCP和UDP(同步和异步)

Swoole TCP和UDP(同步和异步)

作者: gaobinzhan | 来源:发表于2019-12-14 12:21 被阅读0次

Tcp: 舔狗行为 可靠 先连接然后发消息等待回复

Udp: 渣男行为 不可靠 不需要建立连接 通信不需要一直保持

  • tcp服务端
<?php

//创建Server对象,监听 127.0.0.1:9501端口
$serv = new Swoole\Server("127.0.0.1", 9501);

//监听连接进入事件
$serv->on('Connect', function ($serv, $fd) {
    echo "Client: Connect.\n";
});

//监听数据接收事件
$serv->on('Receive', function ($serv, $fd, $from_id, $data) {
    $serv->send($fd, "Server: ".$data);
});

//监听连接关闭事件
$serv->on('Close', function ($serv, $fd) {
    echo "Client: Close.\n";
});

//启动服务器
$serv->start();
  • tcp同步客户端
<?php
$client = new swoole_client(SWOOLE_SOCK_TCP);

//连接到服务器
if (!$client->connect('127.0.0.1', 9501, 0.5))
{
    die("connect failed.");
}
//向服务器发送数据
if (!$client->send("hello world"))
{
    die("send failed.");
}
//从服务器接收数据
$data = $client->recv();
if (!$data)
{
    die("recv failed.");
}
echo $data.PHP_EOL;
//关闭连接
$client->close();

echo '这里是同步客户端!'.PHP_EOL;
  • tcp异步客户端(只能在cli模式下运行)
<?php

$client = new Swoole\Async\Client(SWOOLE_SOCK_TCP);

$client->on("connect", function($cli) {
    $cli->send("GET / HTTP/1.1\r\n\r\n");
});
$client->on("receive", function($cli, $data){
    echo "Receive: $data";
    $cli->send(time()."\n");
    sleep(1);
});
$client->on("error", function($cli){
    echo "error\n";
});
$client->on("close", function($cli){
    echo "Connection close\n";
});
$client->connect('127.0.0.1', 9501);

echo '这里是异步客户端'.PHP_EOL;
  • udp服务端
<?php
//创建Server对象,监听 127.0.0.1:9502端口,类型为SWOOLE_SOCK_UDP
$serv = new Swoole\Server("127.0.0.1", 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);

//监听数据接收事件
$serv->on('Packet', function ($serv, $data, $clientInfo) {
    $serv->sendto($clientInfo['address'], $clientInfo['port'], "Server ".$data);
    var_dump($clientInfo);
});

//启动服务器
$serv->start();
  • udp客户端
<?php
$client = new Swoole\Client(SWOOLE_SOCK_UDP);

$client->sendto('127.0.0.1',9502,'哈哈哈');
$result = $client->recv();
echo $result;

swoole-version 4.4.12


相关文章

  • Swoole TCP和UDP(同步和异步)

    Tcp: 舔狗行为 可靠 先连接然后发消息等待回复 Udp: 渣男行为 不可靠 不需要建立连接 通信不需要一直保持...

  • server

    swoole 中的swerver,一个异步服务器程序,支持TCP、UDP、UnixSocket 3种协议,仅需要设...

  • 2021年iOS面试题

    计算机相关: 1、串行队列和并行队列区别,异步和同步的区别,进程和线程的区别2、数据结构有哪些3、TCP/UDP的...

  • TCP和UDP总结(区别、优缺点、应用实例)

    TCP和UDP的区别和优缺点以及应用实例 TCP和UDP区别总结: TCP面向连接,UDP是无连接的TCP在开始数...

  • 理解 UDP

    更好阅读体验:《理解 TCP 和 UDP》— By Gitbook UDP 和 TCP 的不同 TCP 在传送数据...

  • PHP swoole (1.安装与demo)

    1.简介: swoole是php的一类扩展; swoole用以处理异步及多线程业务场景; swoole支持TCP、...

  • TCP与UDP详解

    1、TCP与UDP概述 TCP (Transmission Control Protocol)和UDP(User ...

  • TCP和UDP区别和使用场景

    TCP/UDP协议 TCP (Transmission Control Protocol)和UDP(User Da...

  • 计算机网络以及网络编程面试题(不断补充)

    TCP/IP网络协议栈层次 TCP 和 UDP 应用场景 TCP 和 UDP 不同 为什么TCP是可靠的?超时重传...

  • 网络

    网络 1.TCP / UDP 协议 TCP (Transmission Control Protocol)和UDP...

网友评论

      本文标题:Swoole TCP和UDP(同步和异步)

      本文链接:https://www.haomeiwen.com/subject/jzvtnctx.html