服務端
//創建Server對象,監聽 127.0.0.1:9501端口
/*
$serv = new Server(string $host, int $port = 0, int $mode = SWOOLE_PROCESS,int $sock_type = SWOOLE_SOCK_TCP);
$host參數用來指定監聽的ip地址,如127.0.0.1,或者外網地址,或者0.0.0.0監聽全部地址
IPv4使用 127.0.0.1表示監聽本機,0.0.0.0表示監聽所有地址
IPv6使用::1表示監聽本機,:: (相當於0:0:0:0:0:0:0:0) 表示監聽所有地址
$mode運行的模式
SWOOLE_PROCESS多進程模式(默認)
SWOOLE_BASE基本模式
$sock_type指定Socket的類型,支持TCP、UDP、TCP6、UDP6、UnixSocket Stream/Dgram 6種
*/
$serv = new swoole_server("127.0.0.1", 9501);
//可以在初始化化是設置參數
$serv->set(array( 'reactor_num' => 2,
//監聽連接進入事件 $serv->on('connect', function ($serv, $fd) { echo "Client: Connect.\n"; }); //監聽數據接收事件,from_id為線程ID $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();
客服端:
<?php
/*
swoole_client->__construct(int $sock_type, int $is_sync = SWOOLE_SOCK_SYNC, string $key);
$sock_type表示socket的類型,如TCP/UDP
使用$sock_type | SWOOLE_SSL可以啟用SSL加密
$is_sync表示同步阻塞還是異步非阻塞,默認為同步阻塞
$key用於長連接的Key,默認使用IP:PORT作為key。相同key的連接會被復用
*/
//連接swoole tcp 服務
$client = new swolle_client(SWOOLE_SOCK_TCP);
if(!$client->connect('127.0.0.1',9501)){
echo "連接失敗";die;
}
fwite(STDOUT,"請輸入消息:");
//獲取信息
$mag = trim(fgets(STDIN));
//發送消息給server
$client->send($msg);
//接收server數據
$result = $client->recv();
echo $result;
也可以按照文檔的復制