Java怎样获取当前机器外网IP

Java怎样获取当前机器外网IP,第1张

java获取本机的外网ip示例:

import javaioIOException;

import javaioInputStream;

import javanet>

如果Wan口IP是一个私有IP地址(10XXX或192168XX或17216XX-17231XX),说明你的WAN口仍处于局域网下,外网无法访问本机(除非你与你的运营商联系为你做端口映射,可能要额外收费),如果Wan口IP是公网地址(除上述几个私有IP地址段外),你可以按以下步骤 *** 作

进入路由器管理

找到设置DMZ区或虚拟服务器的设置项(TP-link在转发规则下)

设置DMZ区或虚拟服务器,DMZ区的主机将直接暴漏在外网,外网可以通过你的公网IP直接访问DMZ主机上任何开放的端口,而设置虚拟服务器只将指定的内网机器的指定端口开放,外部只能访问该端口的服务网(>

注意如果你的外网IP不是固定的,那么每次别人都要访问你当前的外网IP才可以,你可以使用动态DNS服务为你的IP动态绑定域名

开放DMZ或虚拟服务器后,指定主机的IP地址(内网IP,如1921680101这种)要固定,因为它是按IP开放的端口,如果你今天主机A用IPA,主机B用IPB,将IPA开放,则外网可访问主机A的服务,而明天你又把主机A的IP改为IPC,那其他人访问你的外网IP时路由器仍会将IPA对应的主机返回给外网,所以你可能需要Mac地址绑定

公网接入方式是上网的计算机得到的IP地址是Internet上的非保留地址,公网的计算机和Internet上的其他计算机可随意互相访问。那么你对公网ip了解多少呢以下是由我整理关于什么是公网ip的内容,希望大家喜欢!

公网ip的概述

NAT(Network Address Translation)是网络地址转换,它实现内 网的IP地址与公网的地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。NAT的最典型应用是:在一个局域网内,只需要一台计算机连接上Internet,就可以利用NAT共享Internet连接,使局域网内其他计算机也可以上网。使用NAT协议,局域网内的计算机可以访问Internet上的计算机,但Internet上的计算机无法访问局域网内的计算机。

Windows *** 作系统 的Internet连接共享、sygate、winroute、unix/linux的natd等软件,都是使用NAT协议来共享Internet连接。 所有ISP(Internet服务提供商)提供的内网Internet接入方式,几乎都是基于NAT协议的。

公网ip的具 体 *** 作

用邮寄系统作比喻。有公网ip,相当于说你有一个详细的地址,你可以写信寄给别人,别人也可以用这个地址和你进行各种通讯。

现在来看看没有公网ip是一种什么局面。这就像是住在一个大院里 ,所有进出邮件都由传达室转交。如果是普通的邮件,可以放在传达室,传达室的大爷大妈看到你了就会转交给你,或者你自己去传达室看看,这不重要,反正虽然经过了一点波折,还是可以看到邮件的。现在假设以下如果来了个挂号,邮局的人员说:必须本人签收。传达室的大爷就说了:对不起,所有的邮件都要经过我中转~。于是邮局的人员只好把信带回去了……

实际情况和这个差不多,所谓没有公网ip,就是说你的机子并非直接连接上internet,而是所有通讯经过一台代理(一般是透明网关)进行中转,这时候问题就来了,就会有一些通讯无法在这种机制下顺利进行。比如两个网吧之间,网吧的机子是没有公网 ip的典型例子,通常两个网吧之间通过QQ传送文件就不是直接两台机器建立连接传输的,而是通过QQ的公网服务器进行中转传输了。又比如没有公网ip,上网玩对战游戏通常会有问题,你建立的游戏别人无法加入等等,当然通过服务提供商的公网服务器中转还是可以达成两个没有公网IP的机器进行交流的。

IP地址分类

A类:1000 到 127255255255主要分配 给大量主机而局域网网络数量较少的大型网络

B类:128000 到191255255255 一般用于国际性大公司和政府机构

C类:192000 到223255255255 用于一般小公司校园网研究机构等

D类:224000 到 239255255255 用于特殊用途,又称做广播地址

E类:240000 到255255255255 暂时保留

私用ip地址

以上各类地址中有以下做为私用地址

A类:10000 到 10255255255

B类:1721600 到17231255255

C类:19216800 到192168255255

>>> import socket

>>> hostname = socketgethostname()

>>> print hostname

LuciferYanglocal

>>> ip = socketgethostbyname(hostname)

>>> print ip

101018171

>>> ipList = socketgethostbyname_ex(hostname)

>>> print ipList

('luciferyanglocal', [], ['101018171'])

理论上,不是服务器的话不用有直接外网IP到机器,办公室环境或者家庭环境都是局域网环境,外网IP都在路由器上面

Q:我要你的服务器ip,做ip白名单。

遇到这种情况怎么办?ip命令查看?

看到了么,没有。这可急死我了,看不到公网ip,问网管么,不及时啊啊!!!

以下方法:

这种方法前提是你的服务器不准使用CDN动态加速,否则取得的就是加速机器的ip咯。

测试下:

以上就是关于Java怎样获取当前机器外网IP全部的内容,包括:Java怎样获取当前机器外网IP、获取本机外网实际ip、什么是公网ip怎样去 *** 作等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9348687.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存