(1)服务端代码如下(用swoole写的tcp服务端):
//测试fsockopen函数的使用**********服务端(swoole搭建服务端)
$server = new Swoole\Server('0.0.0.0', 9501);
$server->on('connect', function ($serv) {
echo 'Starting...';
});
$server->on('receive', function ($serv, $fd) {
echo 'Receiving...';
$serv->send($fd, 'Good boy!');//发送普通数据
});
$server->on('close', function () {
echo 'Closing...';
});
$server->start();
启动tcp服务端:
[root@swoole demo2]# php tcp_server.php
(2)客户端代码如下:
//测试fsockopen函数的使用**********客户端
function fun_fsockopen_test()
{
$timeout = 2;
$errno = 0;
$errstr = 0;
$socket = @fsockopen('127.0.0.1', 9501, $errno, $errstr, $timeout);
if (!$socket) {
return "error";
}
$max_time = 3;
socket_set_timeout($socket, $max_time);
fwrite($socket, 'send message');
$status = socket_get_status($socket);
if ($status['timed_out']) {
return "Time Out!";
}
//$rev = fgets($socket, 1638400);
$rev = "";
while (!feof($socket)) {
$res = fgets($socket);
$rev .= $res;
}
fclose($socket);
var_dump(trim($rev));//原始数据
}
//调用函数
fun_fsockopen_test();
执行:
[root@swoole demo2]# php fun_fsockopen_test.php
执行客户端后发现一直处于阻塞状态, 这时候Ctrl +C取消服务端, 发现客户端立即收到了信息, 如下:
[root@swoole demo2]# php fun_fsockopen_test.php
string(9) "Good boy!"
[root@swoole demo2]#
PHP函数fsockopen()完成了一次tcp服务通信
博客展示了用Swoole编写的TCP服务端代码及客户端代码。执行客户端时出现阻塞状态,取消服务端后客户端立即收到信息,还提到PHP函数fsockopen()完成了一次tcp服务通信。
282

被折叠的 条评论
为什么被折叠?



