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函数:关闭套接字,释放资源。
推荐的文章
随手记
- ● 自制(IP或域名)可信任的SSL证书,适用360、chrome等浏览器
- ● windows系统下php无法使用curl怎么办?
- ● 绿联UGREENKVM切换器(分屏器)快捷键丢失解决办法
- ● 统信UOS开机指定网址全屏启动自带浏览器以及屏蔽ALT+F4关闭
- ● xshellSSH连接Linux服务器防止超时退出
- ● php8开启OpenSSL扩展库报错disabledinstallext
- ● 统信系统linux安装php时的报错libxml-2.0>=2.7.6
- ● tidb关闭sql_mode=ONLY_FULL_GROUP_BY模式
- ● windows10如何开机自动运行bat文件
- ● Win10Mysql8初始密码丢失,初始化又不显示密码
PHP经验分享
- ● PHP批量对TCP服务端指定多个IP非阻塞检查在线状态
- ● python实现TCP服务端持续接收关机、重启指令并输出结果【系列三】
- ● PHP判断远程文件是否存在
- ● LINUX下用PHP获取CPU型号、内存占用、硬盘占用等信息代码
- ● PHP代码用UDP方式远程唤醒电脑让计算机开机
- ● apache下php生成验证码图片不能显示
- ● PHP使用AES加密解密示例(无偏移)
- ● Pluginmysql_native_passwordreported:''mysql_native_password'isdeprecate问题
- ● PHP实现计算CRC-16/MODBUS校验位
- ● MySQLSUM在没有符合查询条件时返回结果为空的处理办法