欢迎您来到,李雷博客 | PHP博客        登录  |  注册

PHP判断TCP服务端是否在线【系列一】

更新:2025-03-08 21:19:16
人气:48
来源:本站原创
A+

在 PHP 中,你可以使用socket_connect函数来尝试连接到指定的 TCP 服务端,以此判断该服务端是否在线。以下是一个示例代码:

function isTcpServerOnline($host, $port, $timeout = 3) {
    // 创建一个TCP套接字
    $socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    if ($socket === false) {
        return false;
    }

    // (李雷博客原创:https://www.mdaima.com)

    // 设置套接字的超时时间
    socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec' => $timeout, 'usec' => 0));
    socket_set_option($socket, SOL_SOCKET, SO_SNDTIMEO, array('sec' => $timeout, 'usec' => 0));

    // 尝试连接到指定的主机和端口
    $result = @socket_connect($socket, $host, $port);

    // 关闭套接字
    @socket_close($socket);

    return $result;
}

// 示例使用
$host = '192.168.177.1';
$port = 65432;
if (isTcpServerOnline($host, $port)) {
	echo "TCP服务端 $host:$port 在线。";
} else {
	echo "TCP服务端 $host:$port 不在线。";
}

代码解释:

socket_create函数:用于创建一个 TCP 套接字。AF_INET表示使用 IPv4 地址族,SOCK_STREAM表示使用 TCP 协议,SOL_TCP表示使用 TCP 协议族。

socket_set_option函数:用于设置套接字的超时时间,避免程序长时间阻塞。SO_RCVTIMEO和SO_SNDTIMEO分别表示接收和发送的超时时间。

socket_connect函数:尝试连接到指定的主机和端口。如果连接成功,返回true;否则返回false。

socket_close函数:关闭套接字,释放资源。

推荐的文章
# 发表我的评论
  /     /  
# 最近评论
暂时还没有评论,要不要说点什么?
  Ads by Google
  联系博主
Hello,本博客系统采用PHP和MySql开发,程序开发完全是因为个人爱好,是自己纯手写PHP源代码,未采用任何PHP框架!
QQ:858353007   微信号:lileihot123
网站地图
会员服务
关于我们
QQ:858353007
 
广告服务
加我微信
移动端访问
 
 
Copyright © 2014- 2025 www.mdaima.com All Rights Reserved.
李雷博客,专注PHP经验、PHP教程及PHP源代码开源下载分享的PHP博客!   ICP备案号:京ICP备10202169号-4