访问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:设备:InternetGatewayDevice:1"为" urn:urn:dslforum-org: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.1n".
        "HOST: 239.255.255.250:1900n".
        "MAN: "ssdp:discover"n".
        "MX: 1n".
        "ST: urn:dslforum-org:device:InternetGatewayDevice:1nn";
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提供了很多信息,其中一些是:

  • 我的WAN IP地址
  • 我的wifi ssid名称,wifi频道,速度
  • 有关主机名,IP地址等连接设备的信息

您的第一步是找到路由器的IP。为此,您会查看路由表并查找"默认网关"。

获取路由表的一种方法是使用shell_exec运行shell命令。运行的命令取决于O.S。

  • Mac:netstat -rn
  • Linux:ip route
  • Windows:route print

最新更新