php - 用PHP访问wifi路由器
问题描述
如果可以,是否可以在 PHP 中访问 wifi 路由器,然后如何?
- 我想在连接到我的本地主机/服务器的 PHP 中获取 wifi 路由器信息。
- 我想用 PHP 访问 wifi 路由器并获取有关路由器的所有信息
- 我正在使用 PHP 进行地理围栏项目
- 我搜索了不同的 PHP 网络函数,还查看了 PHP 中的套接字编程,但没有明确的前进方向
获取主机IP地址的代码(但我想要有关路由器的信息):
$myIP = gethostbyname(trim(`hostname`));
echo $myIP;dd();
<?php
简单代码示例:
$socket = socket_create(AF_INET,SOCK_STREAM,SOL_TCP);
socket_bind($socket,'0.0.0.0',150);
socket_getsockname($socket, $IP, $PORT);
print $IP.":".$PORT."\n";
?>
解决方案
现在大多数路由器都有 SSDP 服务。基本上,您向广播地址发送了一个小数据包,许多设备都会响应它。您的路由器将是其中之一。
我的路由器将自己暴露为“urn:dslforum-org:device:InternetGatewayDevice:1”,SSDP 可以仅为您过滤该设备。这段快速而肮脏的代码对我有用:
<?php
$socket = socket_create(AF_INET, SOCK_DGRAM, getprotobyname('udp'));
socket_set_option($socket, SOL_SOCKET, SO_BROADCAST, true);
socket_set_option($socket, SOL_SOCKET, SO_RCVTIMEO, array('sec'=> 1, 'usec'=>'0'));
//socket_set_option($socket, IPPROTO_IP, IP_MULTICAST_IF, "xxxx"); //only if you have multiple network cards
$data = "M-SEARCH * HTTP/1.1\n".
"HOST: 239.255.255.250:1900\n".
"MAN: \"ssdp:discover\"\n".
"MX: 1\n".
"ST: urn:dslforum-org:device:InternetGatewayDevice:1\n\n";
socket_sendto($socket, $data, strlen($data), 0, "239.255.255.250", "1900");
socket_recvfrom($socket, $mess, 1024, 0, $ip, $port);
echo $mess;
echo $ip;
socket_close($socket);
所以现在你有了路由器的IP地址。使用 UPnP,您现在可以查询您的路由器。我的路由器通过 UPnP 提供了很多信息,其中一些是:
- 我的广域网IP地址
- 我的 wifi SSID 名称、wifi 频道、速度
- 有关已连接设备的信息,例如主机名、IP 地址等。
推荐阅读
- javascript - 使用 PlacesService 反转地点 ID
- python - 如何将kanboard与电报集成?
- tensorflow - Tensorflow - 固定卷积核
- apache-spark - 加入性能问题:数据帧与应用了 UDF 的相同数据帧
- informatica - 有人可以帮助我了解不同的 informatica 查找缓存吗?
- javascript - 如何在本机反应中推送数组中的不同变量
- asp.net-core - 如何在 Asp.net 核心中获取静态类或 IEnumerable 中的根文件夹路径?
- php - PHP Curl - 在下载之前检查来自 URLA 或 B 的响应
- c# - 可以使用公会 ID 和角色名称设置用户角色
- android - 如何解决 GooglePlayConsole 中的“问题:需要测试登录”问题