創建tcp服務器


 
         

  服務端

//創建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, //線程數 'worker_num' => 4, //進程數 如何查看是否開啟4個進程 ps aft | grep tcp.php(server所在的文件) 'backlog' => 128, //listen backlog 'max_request' => 50,//此參數表示worker進程在處理完n次請求后結束運行。manager會重新創建一個worker進程。此選項用來防止worker進程內存溢出。 'dispatch_mode' => 1,
  'daemonize' => 1//后台運行 ));
//監聽連接進入事件 $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;
也可以按照文檔的復制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM