jjzjj

InetAddress

全部标签

通过 LAN 使用 TCP/IP 进行 Java 聊天

我开发了一个在Java中使用TCP/IP聊天的应用程序。到目前为止,它在同一台机器上运行服务器和客户端时完成了工作,但是我想让它在LAN上工作。我发现我应该在我的路由器上使用端口转发,用于我在客户端和服务器中使用的相同端口,并将它转发到我的机器(将是服务器)的IP。我还发现我应该小心防火墙。在我的原始媒体集线器路由器上,我使用(4444)将端口转发到我机器的本地IP(192.168.0.21)的TCP协议(protocol)。我还确保没有端口被阻止。对于防火墙,我已确保未启用Windows防火墙并关闭了我的卡巴斯基反病毒防火墙。到目前为止,这还不允许我通过LAN与我的vmware机器进

java - 如何将 serversocket 绑定(bind)到特定 IP?

如果我有一个表示IP地址(IPv4或IPv6)的String,我该如何创建一个ServerSocket并绑定(bind)到这个IP而不必关心IP是否传入,是IPv4还是IPv6?我看到有一个构造函数:ServerSocket(intport,intbacklog,InetAddressbindAddr)但InetAddress似乎没有提供任何构造函数,它的子类具有特定于IPv4的名称和IPv6。那么如何将套接字绑定(bind)到IP呢? 最佳答案 可以使用工厂方法INetAddress.getByName.它会找出要使用的子类。例如

java - 将 IP 地址转换为主机名

在我的java应用程序中,如果用户输入IP,我们需要显示主机名,如果给出了主机名,那么我们需要显示主机的IP。例如,如果用户输入像173.194.36.37这样的IP地址,应用程序应该显示google.com,反之亦然。是否有任何实用程序可用于执行此操作? 最佳答案 如果您使用Java编码,请尝试使用InetAddressInetAddressaddr=InetAddress.getByName("173.194.36.37");Stringhost=addr.getHostName();System.out.println(hos

Java快速检查网络连接

我的问题很简单。如果网络连接丢失,我的程序需要立即通知。我使用的是Java5,所以我无法使用NetworkInterface的非常方便的功能.目前我有两种不同的方法来检查网络连接:(try..catches已删除)方法一:URLurl=newURL("http://www.google.com");HttpURLConnectionurlConnect=(HttpURLConnection)url.openConnection();//tryingtoretrievedatafromthesource.Ifoffline,thislinewillfail:ObjectobjData=u

java - 检查ipAddress是否在私有(private)范围内

如何检查IP地址是否属于私有(private)类别?if(isPrivateIPAddress(ipAddress)){//dosomething}如有任何建议,我们将不胜感激。更新的答案privatestaticbooleanisPrivateIPAddress(StringipAddress){InetAddressia=null;try{InetAddressad=InetAddress.getByName(ipAddress);byte[]ip=ad.getAddress();ia=InetAddress.getByAddress(ip);}catch(UnknownHostE

java - 在 Java 中选择用于解析主机名的 DNS 服务器

通过使用InetAddress类,在Java中将主机名解析为IP地址相当容易,如下所示:InetAddressaddress=InetAddress.getByName("www.example.com");但是这个方法使用的是运行系统使用的DNS服务器。有没有办法指定应该用于解析的DNS服务器? 最佳答案 如果您使用SunJava,则可以使用此代码://OverridesystemDNSsettingwithGooglefreeDNSserverSystem.setProperty("sun.net.spi.nameservice

java - InetAddress.getCanonicalHostName() 返回 IP 而不是主机名

我在StackOverflow上寻找如何在Java中查找IP,但答案与我已经在做的相符,但没有解决我的问题。这是我的代码:publicvoidprintHostname(Stringip){System.out.println(InetAddresses.forString(ip).getCanonicalHostName());}InetAddresses只是来自guava库的实用程序类,用于获取InetAdress。问题:此代码对某些IP地址按预期工作,但对其他一些IP地址不工作。一个工作示例例如,对于IP157.55.39.29,输出为:msnbot-157-55-39-29.s

java - 如何在 Java 中以字符串形式从 IP 获取 byte[] 表示

假设我将IP存储在一个字符串中:字符串ip="192.168.2.1"并且我想获得包含四个整数的字节数组。我该怎么做?谢谢! 最佳答案 像这样:InetAddressip=InetAddress.getByName("192.168.2.1");byte[]bytes=ip.getAddress();for(byteb:bytes){System.out.println(b&0xFF);} 关于java-如何在Java中以字符串形式从IP获取byte[]表示,我们在StackOverfl

java - 将 IPv6 转换为 long 并将 long 转换为 IPv6

我应该如何执行从IPv6到long的转换,反之亦然?到目前为止我有:publicstaticlongIPToLong(Stringaddr){String[]addrArray=addr.split("\\.");longnum=0;for(inti=0;i>24)&0xFF)+"."+((ip>>16)&0xFF)+"."+((ip>>8)&0xFF)+"."+(ip&0xFF);}这是正确的解决方案还是我遗漏了什么?(如果该解决方案同时适用于ipv4和ipv6就完美了) 最佳答案 你也可以使用java.net.InetAddre

Linux 上的 Java : Listening to broadcast messages on a bound local address

我有一个有点奇怪的要求,即能够在Linux机器上从Java监听多个网络接口(interface),并确定其中一个是否接收到某种类型的UDP数据包。我需要的输出数据是相关接口(interface)的IP地址。有没有办法在Java中做到这一点?监听通配符地址(newDatagramSocket(port))没有帮助,因为虽然我确实收到了广播数据包,但我无法确定它们通过的接口(interface)的本地IP地址。在绑定(bind)到某个接口(interface)(newDatagramSocket(端口,地址))时收听广播根本不会收到数据包。这个案例值得一个代码示例来展示我正在尝试做的事情: