tcp服务端
php
复制代码
use Swoole\Server;
$server = new Server('127.0.0.1', 9501, SWOOLE_PROCESS, SWOOLE_SOCK_TCP);
$server->on('Connect', function (Server $server, int $fd, int $reactorId) {
echo "Client: Connect fd:" . $fd . "reactorId :" . $reactorId . ".Connect.\n";
});
$server->on('Receive', function (Server $server, int $fd, int $reactorId, $data) {
echo "Client: Receive fd:" . $fd . "reactorId :" . $reactorId . ".Connect.\n";
echo "data:" . $data . "\n";
$msg = "hello fd:" . $fd;
$server->send($fd, $msg);
});
$server->on('Close', function (Server $server, int $fd, int $reactorId) {
echo "Client: Receive fd:" . $fd . "reactorId :" . $reactorId . ".Connect.\n";
});
$server->start();
udp服务端
php
复制代码
use Swoole\Server;
$server = new Server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP);
$server->on('Connect', function (Server $server, int $fd, int $reactorId) {
echo "Client: Connect fd:" . $fd . "reactorId :" . $reactorId . ".Connect.\n";
});
$server->on('Packet', function (Server $server, string $data, array $clientInfo) {
var_dump($clientInfo);
$server->sendto($clientInfo['address'], $clientInfo['port'], "Server:{$data}");
});
$server->on('Close', function (Server $server, int $fd, int $reactorId) {
echo "Client: Receive fd:" . $fd . "reactorId :" . $reactorId . ".Connect.\n";
});
$server->start();
tcp 同步堵塞 客户端
php
复制代码
use Swoole\Client;
$host = '127.0.0.1';
$part = 9501;
$client = new Client(SWOOLE_SOCK_TCP);
if (!$client->connect($host, $part, 0.5)) {
echo "connect failed. Error: {$client->errCode}\n";
$client->close();
//重试
$client->connect($host, $part);
}
$client->send("hello world\n");
echo $client->recv() . "\n";
$client->close();
udp 同步堵塞 客户端
php
复制代码
use Swoole\Client;
$host = '127.0.0.1';
$part = 9502;
$client = new Client(SWOOLE_SOCK_UDP);
if (!$client->connect($host, $part, 0.5)) {
echo "connect failed. Error: {$client->errCode}\n";
$client->close();
//重试
$client->connect($host, $part);
}
$client->send("hello world\n");
echo $client->recv() . "\n";
$client->close();
tcp 异步回调 客户端
php
复制代码
use Swoole\Async\Client;
$host = '127.0.0.1';
$part = 9501;
function doConnect(Client $client) {
if ($client->isConnected()) {
$client->send("hello word");
}
}
function onReceive(Client $client, string $data) {
$recv_len = strlen($data);
echo $data . "\n";
$client->send("is test");
$client->close();
if (!$client->isConnected()) {
echo "closed\n";
}
}
$client = new Client(SWOOLE_SOCK_TCP);
$client->on("connect", "doConnect");//函数方法回调
$client->on("receive", "onReceive");
$client->on("error", function (Client $client) {
echo "error\n";
});
$client->on("close", function (Client $client) {
echo "close\n";
});
$client->connect($host, $part, 0.2);
udp 异步方法回调 客户端
php
复制代码
use Swoole\Async\Client;
$host = '127.0.0.1';
$part = 9502;
class UserCliten {
public static function onConnect(Client $client) {
if ($client->isConnected()) {
$client->send("hello word");
}
}
public function onReceive(Client $client, string $data) {
$recv_len = strlen($data);
echo $data . "\n";
$client->send("is test");
$client->close();
if (!$client->isConnected()) {
echo "closed\n";
}
}
}
$user_client = new UserCliten();
$client = new Client(SWOOLE_SOCK_UDP);
$client->on("connect", "UserCliten::onConnect");//类方法回调
$client->on("receive", [$user_client, 'onReceive']);//对象方法回调
$client->on("error", function (Client $client) {
echo "error\n";
});
$client->on("close", function (Client $client) {
echo "close\n";
});
$client->connect($host, $part, 0.2);