我想将$_SERVER["REMOTE_ADDR"]
PHP中返回的数据存储到数据库字段中,这非常简单.问题是我无法找到有关IPv6地址的文本表示的最大长度的任何适当信息,这是网络服务器提供的$_SERVER["REMOTE_ADDR"]
.
我对将文本表示转换为地址通常编码的128位不感兴趣,我只想知道存储返回的任何IPv6地址需要多少个字符$_SERVER["REMOTE_ADDR"]
.
如何从控制器中确定给定请求的IP地址?例如(快递):
app.post('/get/ip/address', function (req, res) {
// need access to IP address here
})
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个命令行解决方案,它将返回localhost的主(第一)IP地址,而不是127.0.0.1
该解决方案至少适用于Linux(Debian和RedHat)和OS X 10.7+
我知道ifconfig
两者都可用,但它们的输出在这些平台之间并不一致.
正如标题所说.我需要能够检索docker托管的IP地址和从主机到容器的端口映射,并在容器内部执行此操作.
我有一个简单的node.js程序在我的机器上运行,我想获得运行我程序的PC的本地IP地址.我如何使用node.js获取它?
我正在尝试开发一个系统,其中有不同的节点在不同的系统或同一系统上的不同端口上运行.
现在,所有节点都创建一个Socket,其目标IP作为称为引导节点的特殊节点的IP.然后节点创建自己的节点ServerSocket
并开始侦听连接.
引导节点维护一个节点列表,并在被查询时返回它们.
现在我需要的是节点必须将其IP注册到自举节点.我尝试使用cli.getInetAddress()
一旦客户端连接到ServerSocket
bootstrapping节点,但这不起作用.
使用代码:
System.out.println(Inet4Address.getLocalHost().getHostAddress());
Run Code Online (Sandbox Code Playgroud)
要么
System.out.println(InetAddress.getLocalHost().getHostAddress());
Run Code Online (Sandbox Code Playgroud)
我的PPP连接IP地址是:117.204.44.192,但上面的返回值为192.168.1.2
编辑
我使用以下代码:
Enumeration e = NetworkInterface.getNetworkInterfaces();
while(e.hasMoreElements())
{
NetworkInterface n = (NetworkInterface) e.nextElement();
Enumeration ee = n.getInetAddresses();
while (ee.hasMoreElements())
{
InetAddress i = (InetAddress) ee.nextElement();
System.out.println(i.getHostAddress());
}
}
Run Code Online (Sandbox Code Playgroud)
我能够获得所有相关的所有IP地址NetworkInterface
,但我如何区分它们?这是我得到的输出:
127.0.0.1
192.168.1.2
192.168.56.1
117.204.44.19
Run Code Online (Sandbox Code Playgroud) 有没有办法获取本地网络中所有有效IP地址的列表?
我的意思是每个用户在网络中使用的所有IP地址.
我使用Jekyll
和Vagrant
我的Mac上.我发现Jekyll server
将绑定0.0.0.0:4000
而不是127.0.0.1:4000
.也gem server
将被默认绑定到该地址.我仍然可以通过它访问它http://localhost:port
.但是Jekyll
,似乎默认设置(例如0.0.0.0:4000)需要访问Internet.Jekyll server
没有互联网,我无法运行.这是一个小虫子吗?
我也用Vagrant
.我在Vagrantfile中设置了端口转发(8080 => 4000),因为我Jekyll
在Vagrant
虚拟机中安装并在Macintosh下测试它.如果我使用默认设置(0.0.0.0:4000),它可以工作.我可以从我的野生动物园参观它http://localhost:8080
.但如果没有互联网,我无法绑定到0.0.0.0:4000.我jekyll server -H 127.0.0.1
用来绑定服务127.0.0.1:4000
,然后我不能通过它来访问它http://localhost:8080
.
谁能解释0.0.0.0,127.0.0.1和localhost之间的区别?任何人都可以解释为什么差异会导致这个问题?
我不完全理解我应该如何获得远程用户IP地址.
假设我有一个简单的请求路由,例如:
app.get(/, function (req, res){
var forwardedIpsStr = req.header('x-forwarded-for');
var IP = '';
if (forwardedIpsStr) {
IP = forwardedIps = forwardedIpsStr.split(',')[0];
}
});
Run Code Online (Sandbox Code Playgroud)
上述方法是否正确获取真实用户IP地址还是有更好的方法?那些代理呢?
我想通过他们的知识产权来访问国家...现在我正在使用这个(http://api.hostip.info/country.php?ip= ......)
这是我的代码:
<?php
if (isset($_SERVER['HTTP_CLIENT_IP']))
{
$real_ip_adress = $_SERVER['HTTP_CLIENT_IP'];
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$real_ip_adress = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$real_ip_adress = $_SERVER['REMOTE_ADDR'];
}
$cip = $real_ip_adress;
$iptolocation = 'http://api.hostip.info/country.php?ip=' . $cip;
$creatorlocation = file_get_contents($iptolocation);
?>
Run Code Online (Sandbox Code Playgroud)
嗯,它工作正常,但问题是,这会返回像美国或CA这样的国家/地区代码,而不是像美国或加拿大这样的整个国家/地区名称.
那么,hostip.info提供这个有什么好的替代方案吗?
我知道我可以编写一些代码,最终将这两个字母转换为整个国家/地区名称,但我只是懒得写一个包含所有国家/地区的代码......
PS:出于某种原因,我不想使用任何现成的CSV文件或任何能为我获取此信息的代码,例如ip2country现成代码和CSV.
ip ×10
node.js ×3
ip-address ×2
api ×1
bash ×1
docker ×1
express ×1
geolocation ×1
ifconfig ×1
ipv6 ×1
java ×1
javascript ×1
jekyll ×1
networking ×1
php ×1
sockets ×1
unix ×1