不是机器的外网 ip,是机器网卡上的 ip 地址。
要求:
- 不能用 OS 的命令( ifconfig,……),因为目标机器很可能没有这个命令
- 要跨平台,至少支持 Windows、OSX、Linux 3 个平台
PS:
我知道 swoole 有 swoole_get_local_ip()可以获取本地 ip 列表,但是不满足我跨平台的需求。
不是机器的外网 ip,是机器网卡上的 ip 地址。
我知道 swoole 有 swoole_get_local_ip()可以获取本地 ip 列表,但是不满足我跨平台的需求。
|
msg7086Jan 11, 2018
1
你问的是和内核有关的问题,要跨平台当然是先判断目标平台然后分别调用相应的系统 API 了。
PHP 可能做不到这点,毕竟要调用 syscall。 |
|
msg7086Jan 11, 2018
2
Linux: http://man7.org/linux/man-pages/man3/getifaddrs.3.html
Windows: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365915.aspx 你可能要自己写 PHP 扩展了。 |
|
alpha1130Jan 11, 2018
3
WEB 服务下面可以用$_SERVER['REMOTE_ADDR']拿到当前响应服务器的 IP
|
|
alpha1130Jan 11, 2018
4
😯。。。。。。。。。没看到是内网
|
|
vex2Jan 11, 2018
5
`ifconfig`
|
|
bigtwoJan 11, 2018
6
下几个不同的 php 探针研究
|
|
owenliangJan 11, 2018 via Android
7
api 是有的 都是拿网卡的信息
|
|
yingfengiJan 11, 2018
8
研究下 php 探针
|
|
mingyunJan 12, 2018
9
>>> gethostbyname('')
=> "192.168.1.101" |
|
ErskineJan 12, 2018 via Android
10
/proc/net/wireless
/proc/net/dev 这个目录下的文件 一个一个找过去 |
|
zsdroidJan 12, 2018
15
php -r "echo gethostbyname(gethostname())"
|
|
zsdroidJan 12, 2018
16
少了分号,v2ex 好像没有编辑功能。。
|
|
sunchuoJan 13, 2018
18
gethostbyname(gethostname());
|
|
282853251Jan 14, 2018
19
只写 PHP 代码,你的这个需求,做不到。
|