NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
# TCP TCP Server ``` <pre class="calibre10">``` <span class="token">//创建Server对象,监听 127.0.0.1:9501端口</span> $serv <span class="token1">=</span> <span class="token5">new</span> <span class="token4">Swoole<span class="token3">\</span>Server</span><span class="token3">(</span><span class="token2">"127.0.0.1"</span><span class="token3">,</span> <span class="token6">9501</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//监听连接进入事件</span> $serv<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">'Connect'</span><span class="token3">,</span> <span class="token5">function</span> <span class="token3">(</span>$serv<span class="token3">,</span> $fd<span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">"Client: Connect.\n"</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//监听数据接收事件</span> $serv<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">'Receive'</span><span class="token3">,</span> <span class="token5">function</span> <span class="token3">(</span>$serv<span class="token3">,</span> $fd<span class="token3">,</span> $from_id<span class="token3">,</span> $data<span class="token3">)</span> <span class="token3">{</span> $serv<span class="token1">-</span><span class="token1">></span><span class="token4">send</span><span class="token3">(</span>$fd<span class="token3">,</span> <span class="token2">"Server: "</span><span class="token3">.</span>$data<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//监听连接关闭事件</span> $serv<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">'Close'</span><span class="token3">,</span> <span class="token5">function</span> <span class="token3">(</span>$serv<span class="token3">,</span> $fd<span class="token3">)</span> <span class="token3">{</span> echo <span class="token2">"Client: Close.\n"</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//启动服务器</span> $serv<span class="token1">-</span><span class="token1">></span><span class="token4">start</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> ``` ``` 后台CLI连接到这个服务器 ``` <pre class="calibre10">``` telnet <span class="token6">127.0</span><span class="token6">.0</span><span class="token6">.1</span> <span class="token6">9501</span> ``` ``` TCP Client(同步) ``` <pre class="calibre10">``` $client <span class="token1">=</span> <span class="token5">new</span> <span class="token4">swoole_client</span><span class="token3">(</span>SWOOLE_SOCK_TCP<span class="token3">)</span><span class="token3">;</span> <span class="token">//连接到服务器</span> <span class="token5">if</span> <span class="token3">(</span><span class="token1">!</span>$client<span class="token1">-</span><span class="token1">></span><span class="token4">connect</span><span class="token3">(</span><span class="token2">'127.0.0.1'</span><span class="token3">,</span> <span class="token6">9501</span><span class="token3">,</span> <span class="token6">0.5</span><span class="token3">)</span><span class="token3">)</span> <span class="token3">{</span> <span class="token4">die</span><span class="token3">(</span><span class="token2">"connect failed."</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">//向服务器发送数据</span> <span class="token5">if</span> <span class="token3">(</span><span class="token1">!</span>$client<span class="token1">-</span><span class="token1">></span><span class="token4">send</span><span class="token3">(</span><span class="token2">"hello world"</span><span class="token3">)</span><span class="token3">)</span> <span class="token3">{</span> <span class="token4">die</span><span class="token3">(</span><span class="token2">"send failed."</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">//从服务器接收数据</span> $data <span class="token1">=</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">recv</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span> <span class="token3">(</span><span class="token1">!</span>$data<span class="token3">)</span> <span class="token3">{</span> <span class="token4">die</span><span class="token3">(</span><span class="token2">"recv failed."</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> echo $data<span class="token3">;</span> <span class="token">//关闭连接</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">close</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> ``` ``` TCP Client(异步) ``` <pre class="calibre17">``` $client <span class="token1">=</span> <span class="token5">new</span> <span class="token4">swoole_client</span><span class="token3">(</span>SWOOLE_SOCK_TCP<span class="token3">,</span> SWOOLE_SOCK_ASYNC<span class="token3">)</span><span class="token3">;</span> <span class="token">//注册连接成功回调</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">"connect"</span><span class="token3">,</span> <span class="token5">function</span><span class="token3">(</span>$cli<span class="token3">)</span> <span class="token3">{</span> $cli<span class="token1">-</span><span class="token1">></span><span class="token4">send</span><span class="token3">(</span><span class="token2">"hello world\n"</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//注册数据接收回调</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">"receive"</span><span class="token3">,</span> <span class="token5">function</span><span class="token3">(</span>$cli<span class="token3">,</span> $data<span class="token3">)</span><span class="token3">{</span> echo <span class="token2">"Received: "</span><span class="token3">.</span>$data<span class="token3">.</span><span class="token2">"\n"</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//注册连接失败回调</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">"error"</span><span class="token3">,</span> <span class="token5">function</span><span class="token3">(</span>$cli<span class="token3">)</span><span class="token3">{</span> echo <span class="token2">"Connect failed\n"</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//注册连接关闭回调</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">on</span><span class="token3">(</span><span class="token2">"close"</span><span class="token3">,</span> <span class="token5">function</span><span class="token3">(</span>$cli<span class="token3">)</span><span class="token3">{</span> echo <span class="token2">"Connection close\n"</span><span class="token3">;</span> <span class="token3">}</span><span class="token3">)</span><span class="token3">;</span> <span class="token">//发起连接</span> $client<span class="token1">-</span><span class="token1">></span><span class="token4">connect</span><span class="token3">(</span><span class="token2">'127.0.0.1'</span><span class="token3">,</span> <span class="token6">9501</span><span class="token3">,</span> <span class="token6">0.5</span><span class="token3">)</span><span class="token3">;</span> ``` ```