我试图获得本地IP.它应该合作
System.out.println(Inet4Address.getLocalHost().getHostAddress());
Run Code Online (Sandbox Code Playgroud)
要么
InetAddress addr = InetAddress.getLocalHost();
ip = addr.getHostAddress();
System.out.println("Ip: " + ip);
Run Code Online (Sandbox Code Playgroud)
但它总是返回192.168.178.154而不是192.168.178.119(这是我真正的本地IP(终端 - > ifconfig))
我该怎么办?
这是绑定到所有ip接口和特定udp端口的简单情况:
int bindPort = 5555; // example, udp port number
DatagramSocket socket = new DatagramSocket(bindPort);
byte[] receiveData = new byte[1500];
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
...
socket.receive(receivePacket);
Run Code Online (Sandbox Code Playgroud)
我怎么知道我收到了哪个ip接口的数据包?
我可以看到有getSocketAddress():
获取此数据包发送到或来自的远程主机的SocketAddress(通常是IP地址+端口号).
但是返回远程ip +端口.我想知道本地ip(在这个例子中本地端口是5555).
有没有可能与标准.Java库?
我有一个 Java 应用程序,它在服务提供者中注册服务器组件,然后将服务名称发送到客户端。客户端使用服务名称从服务提供者那里获取到服务器的地址。但是,服务器有多个接口,客户端只能访问其中的一个接口,因此必须使用正确的 IP 注册服务。我们通过广播发现了客户端,所以我有客户端 IP 和计算机网络接口的枚举。在不知道客户端 IP 的网络掩码是什么的情况下,如何将 IP 与接口匹配?
我不自觉地想象将所有地址都转换为整数,并使用他们的网络掩码对本地 ip 进行处理并寻找“最佳匹配”,但我想知道是否有更好的方法?
(这是一个企业(tm)解决方案,因此切断服务提供商不是一种选择,至少不是首先没有政治运动;))
我正在尝试创建一个Java程序来使用Java检索我的系统IP地址.在单击按钮时,显示的IP地址是一个文本框.
现在的问题是,每次我使用代码
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try {
jTextField1.setText(Inet4Address.getLocalHost().toString());
} catch (UnknownHostException ex) {
jTextField1.setText("IP not found");
}
}
Run Code Online (Sandbox Code Playgroud)
它只检索我的环回IP,而不是我在Ubuntu中配置的静态IP,其范围是192.16x.xxx.xxx这段代码在我的Windows 7上工作正常但在Ubuntu 11.04上没有,我不知道为什么.. .!我不想使用Windows开发应用程序或任何东西.
我只有2个问题
我正在使用一个java.net.InetAddress.getLocalHost().getHostAddress()用于获取本地IP地址的库.但是,这始终会在我的计算机上返回IPv6地址(Gentoo Linux,JDK 1.6.0_37).该地址还用于不支持IPv6地址的上下文中,因此失败.
有没有办法强制getHostAddress()返回IPv4地址(例如通过参数到JVM)?
我在启动 spring 启动应用程序时通过 shell 脚本传递端口。想知道如何在应用程序中获取运行端口和系统IP地址以打印在日志文件中。
脚本:-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=9890
我知道从java中的httprequest获取客户端的IP和服务器IP非常容易.是否有可能以任何方式获取客户端的浏览器IP.
提前致谢
我正在尝试执行以下代码。我是 Java 新手,所以这是我第一次接触 java.net。程序中没有错误,但我得到的本地主机地址为 192.168.56.1,而我的 IP 为 192.168.2.10
import java.net.*;
class InetAddressDemo
{
public static void main(String[] args)
{
try
{
InetAddress address = InetAddress.getLocalHost();
System.out.println("\nLocalhost Address : " + address + "\n");
}
catch (Exception e)
{
System.out.println(e);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用此方法获取远程IP:
String remoteAddress = ((ServletRequestAttributes) RequestContextHolder
.currentRequestAttributes()).getRequest().getRemoteAddr();
Run Code Online (Sandbox Code Playgroud)
我在控制器中调用它,但它返回0:0:0:0:0:0:0:1.怎么了?
我使用OpenStack一段时间来管理我的应用程序.现在我想将它们作为每个应用程序的容器转移到docker,因为docker更轻巧,更高效.
几乎与网络相关的每件事都在运行时出错了.
在我的设计中,每个应用程序容器都应该有一个静态IP地址,我可以使用hosts文件来定位容器网络.
这是我的实施.(bash文件名是docker_addnet.sh)
# Useages
# docker_addnet.sh container_name IP
# interface name: veth_(containername)
# gateway 172.17.42.1
if [ $# != 2 ]; then
echo -e "ERROR! Wrong args"
exit 1
fi
container_netmask=16
container_gw=172.17.42.1
container_name=$1
bridge_if=veth_`echo ${container_name} | cut -c 1-10`
container_ip=$2/${container_netmask}
container_id=`docker ps | grep $1 | awk '{print \$1}'`
pid=`docker inspect -f '{{.State.Pid}}' ${container_name}`
echo "Contaner: " $container_name "pid: " $pid
mkdir -p /var/run/netns
ln -s /proc/$pid/ns/net /var/run/netns/$pid
brctl delif docker0 $bridge_if
ip link add A type veth …Run Code Online (Sandbox Code Playgroud) 为什么我得到IP地址为127.0.0.1
这是我用于获取IP地址的示例程序
package com;
import java.net.InetAddress;
import org.apache.log4j.Logger;
public class Test {
private static final Logger logger = Logger.getLogger(Test.class);
public static void main(String args[]) throws Exception {
String ips = InetAddress.getLocalHost().getHostAddress().trim();
System.out.println(ips);
}
}
Run Code Online (Sandbox Code Playgroud) java ×11
ip ×3
ip-address ×3
spring ×2
android ×1
datagram ×1
docker ×1
inetaddress ×1
ipv4 ×1
ipv6 ×1
java-ee ×1
local ×1
lookup ×1
netbeans ×1
networking ×1
servlets ×1
spring-boot ×1