Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP访问wifi路由器_Php - Fatal编程技术网

用PHP访问wifi路由器

用PHP访问wifi路由器,php,Php,是否可以在PHP中访问wifi路由器?如果可以,如何访问?我想用PHP获取连接到本地主机/服务器的wifi路由器信息? 我想访问PHP中的wifi路由器,并获取有关路由器的所有信息 我正在用PHP做一个地理围栏项目 我搜索了不同的PHP网络函数,也查看了PHP中的套接字编程,但没有找到明确的前进方向 获取主机的IP地址,但我需要有关路由器的信息 $myIP = gethostbyname(trim(`hostname`)); echo $myIP;dd(); <?php 第一

是否可以在PHP中访问wifi路由器?如果可以,如何访问?我想用PHP获取连接到本地主机/服务器的wifi路由器信息? 我想访问PHP中的wifi路由器,并获取有关路由器的所有信息 我正在用PHP做一个地理围栏项目 我搜索了不同的PHP网络函数,也查看了PHP中的套接字编程,但没有找到明确的前进方向

获取主机的IP地址,但我需要有关路由器的信息

 $myIP = gethostbyname(trim(`hostname`));
    echo $myIP;dd();

<?php

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

获取路由表的一种方法是运行shell命令,例如使用
shell\u exec
。要运行的命令取决于o.s

  • Mac:
    netstat-rn
  • Linux:
    ip路由
  • 窗口:
    路线打印

现在大多数路由器都有SSDP服务。基本上,你发送一个小数据包到一个广播地址,很多设备都会响应它。你的路由器就是其中之一

我的路由器将其自身暴露为“urn:dslforum:org:device:internetgatewayedevice: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);

如果您的路由器有web界面,您可以通过curl登录并访问它。
<?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);