- 如何限制java项目在指定主机上运行 5C
-
springboot项目,现在用混淆加密代码,
同时想要实现在指定服务器上运行,
我想的是在程序启动的时候去获取本地ip,
然后比对ip地址,
相同的话运行,不相同的话程序结束,
但是试了好多种方法获取的都是127.0.0.1,在本地运行的时候获取的是局域网的IP,
想问一下各位大神有没有什么合适的解决方法,
用什么东西做限制无所谓,
只要实现只能在指定服务器运行这个要求就好
用云服务器的MAC地址做绑定可以吗,云服务器的MAC地址会不会更改?
感谢
按照你的思路,可以用公网ip,而不是本机ip,用httpclient去访问公网上一个能报告ip的网址(比如ip138),用返回的你服务器的公网ip代替本机ip
还可以用本机的硬盘卷标、主板序列号、mac等。不过这个需要jni去调用原生的代码,并且操作系统平台相关(windows、linux获取的方式不同)
对ip限制,一般将ip段配置到数据库,程序执行时到库中进行查找匹配
一般可以用网卡地址,即MAC地址。
InetAddress localInetAddress=null;
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (inetAddress.isLoopbackAddress()) {//回路地址,如127.0.0.1
//xxxxx
} else if (inetAddress.isLinkLocalAddress()) {//169.254.x.x
//
} else {
// Use a non-link local, non-loop back address by default
localInetAddress=inetAddress;
}
}
}
byte[] mac = NetworkInterface.getByInetAddress(localInetAddress).getHardwareAddress();
StringBuffer sb = new StringBuffer("");
for(int i=0; i<mac.length; i++) {
if(i!=0) {
sb.append("-");
}
//字节转换为整数
int temp = mac[i]&0xff;
String str = Integer.toHexString(temp);
System.out.println("每8位:"+str);
if(str.length()==1) {
sb.append("0"+str);
}else {
sb.append(str);
}
}
System.out.println("本机MAC地址:"+sb.toString().toUpperCase());
这里有一个借助ip138返回你的出口ip的代码
public class Test {
public static void main(String[] args) {
try {
String ip1 = getMyIP();
System.out.println("myIP:" + ip1);
String ip2 = getMyIPLocal();
System.out.println("myLocalIP:" + ip2);
} catch (IOException e1) {
e1.printStackTrace();
}
}
private static String getMyIP() throws IOException {
InputStream ins = null;
try {
URL url = new URL("http://iframe.ip138.com/ic.asp");
URLConnection con = url.openConnection();
ins = con.getInputStream();
InputStreamReader isReader = new InputStreamReader(ins, "GB2312");
BufferedReader bReader = new BufferedReader(isReader);
StringBuffer webContent = new StringBuffer();
String str = null;
while ((str = bReader.readLine()) != null) {
webContent.append(str);
}
int start = webContent.indexOf("[") + 1;
int end = webContent.indexOf("]");
return webContent.substring(start, end);
} finally {
if (ins != null) {
ins.close();
}
}
}
private static String getMyIPLocal() throws IOException {
InetAddress ia = InetAddress.getLocalHost();
return ia.getHostAddress();
}
}
看了你的问题,我觉得你可以换一种思路,你的目的是为了配置固定的服务使用程序,那么你可以在数据库做个配置,比如一个md5加密后的密钥,在程序调用的时候查找比对密钥。类似于这种的。
你需要了解的是如何获取ip地址:
Enumeration networkInterfaces = NetworkInterface.getNetworkInterfaces();
while (networkInterfaces.hasMoreElements()) {
NetworkInterface networkInterface = networkInterfaces.nextElement();
Enumeration inetAddresses = networkInterface.getInetAddresses();
while (inetAddresses.hasMoreElements()) {
InetAddress inetAddress = inetAddresses.nextElement();
if (inetAddress.isLoopbackAddress()) {//回路地址,如127.0.0.1
System.out.println("loop addr:" + inetAddress);
} else if (inetAddress.isLinkLocalAddress()) {//169.254.x.x
System.out.println("link addr:" + inetAddress);
} else {
//非链接和回路真实ip
System.out.println("ip:" + inetAddress);
}
}
}
[点击并拖拽以移动]
结果:
loop addr:/127.0.0.1
loop addr:/0:0:0:0:0:0:0:1
ip:/192.168.10.89
- 其他相关推荐
- idea打包Jar(纯java项目可执行主类)
- 1、用maven-shade-plugin打包我们这里利用maven中的maven-shade-plugin插件。在pom.xml中,我们加入如下的信息来加入插件。&lt;!-- 配置打可执行的jar --&gt; &lt;plugin&gt; &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt; &lt;artifactI...
- sudo授权指定用户在指定主机上运行某些命令
- sudo基本知识
- eclipse上如何在手机上运行项目
- 手机要能与电脑相连,当然要安驱动了。效果就是你插入手机,电脑显示驱动已识别。驱动安装的官方教程:http://developer.android.com/sdk/win-usb.html 设置android手机为USB调试模式 步骤: menu—> 设置 —> 应用程序 —> 开发 , 选择【USB调试】 首先打开集成开发环境 连接手机,
- 手机端运行本地javaweb项目在手机展示
- 前提条件:电脑和手机在同一个网络环境下。因此这就要求了需要有wifi,①电脑开wifi,手机连接;②或者就是电脑和手机连接相同的wifi。通过cmd窗口,输入命令ipconfig:我的是都用的wifi,因此我要的ip地址就是上图圈中的ip地址。然后把本地运行的连接,例如:localhost:8080/index 改成ip的来链接即:10.0.***.****:8080/index即可。问题:如果手...
- Eclipse中Java项目打成jar包,在虚拟机终端上面运行
- 一、此Java项目中不引用第三方jar包 1、利用Eclipse自带的Export,选择java下的JAR file,选择打成jar包的路径,和Main class。 2、测试(此项目中只有一个Syso"hello world"的类,并且输出语句在主函数中) 二、引用到第三方jar包 (一)、手动打包 1、自定义配置文件MANIFEST.MF(在项目下新建MANIFEST
- 怎样禁止安装程序 只让电脑运行某些程序 限制程序运行的方法
- 本文讲述的是如何阻止电脑随意安装软件、限制电脑打开某些程序或者只让电脑打开某些软件,从而有效控制电脑使用、防止电脑随意安装程序而导致电脑运行速度变慢、电脑性能下降的情况发生,有利于单位更好地管理电脑使用。
- ERROR:通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连
- 本文转载于:file:///C:/Users/Administrator/Desktop/[%E8%BD%AC%E8%BD%BD]%E9%80%9A%E8%BF%87%E7%AB%AF%E5%8F%A3%201433%20%E8%BF%9E%E6%8E%A5%E5%88%B0%E4%B8%BB%E6%9C%BA%20localhost%20%E7%9A%84%20TCP%20IP%20%E8%BF
- sqlserver出错总结
- 一、关于“验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。” 本地数据库(SqlServer2008)连接不上了,提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。未找到或无法访问服务器。请验证实例名称是否正确并且 SQL Server 已配置为允许远程连接。”先进入主菜单--〉查看--〉已注册的服务器,在“地服务器组”上点右键--〉新建服务器
- Java代码是如何在虚拟机中运行的
- Java作为一门高级语言,它的语法非常复杂、抽象程度也很高。想像C语言一样直接运行在硬件上显然是不可能的,所以在Java程序运行之前,需要将Java程序通过编译器转换成虚拟机所能识别的Java字节码,Java字节码都是固定的一个字节,因此只要将Java程序转换成虚拟机所能识别的Java字节码,就能做到“一次编译,到处运行”。 是不是感觉Java虚拟机很强大,虚拟机不仅...
- 驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接。该驱动程序只能与 SQL Server 2000 或更高版本一起使
- 十月 10, 2015 12:14:16 下午 com.microsoft.sqlserver.jdbc.SQLServerConnection Prelogin 警告: ConnectionID:14 Prelogin error: host localhost port 1433 Unexpected end of prelogin response after 0 bytes read
- linux部署项目(Java项目+Tomcat+mysql)
- 项目做完了,要发布了,而Java的特长之一就是移植性好,面对着微软的XP的停止服务,Windows系统的“独裁”,越来越多的商家选择了开源的免费的linux系统作为服务器。因为linux系统也有图形界面(虽然和Windows比起来很不一样),所以在图形界面中操作相对来说还是容易的,这就好比我们在Windows系统上部署项目一样,大部分人都是小Case。但是真正工作中,服务器都会在固定的机房,而且往
- 在linux虚拟机上部署MyEclipse上的javaWeb项目步骤
- 第一步:在MyEclipse上生成WAR包 右击javaWeb项目-----Export------MyEclipse JEE----------WAR file 第二步:SQLyog上生成mysql脚本文件 用SQLyog连接本地数据库------右击该项目所用数据库-------备份/导出--------------备份数据库 转存SQL-------结构和数据--------导出 第
- 虚拟机里部署java web工程
- 我本机使用的CentOS,以这个为例,以下内容全部本人亲测。 第一步:先下载VMware-workstation-full-12.1.1-3770994.exe 本机安装,然后网上找密钥破解。 网上下载CentOS-7-x86_64-DVD-1503-01.iso 点开如下图所示 点击创建新的虚拟机,一步一步按照网上的来,选择下载的CentOS-7-x86_64-DVD-1503-01.i
- NetBeans设置主类
- 在项目处右键--属性--运行,在“主类”处浏览选择主类。
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“connect timed out。请验证连接属性。确保 SQL Server 的实例正在主机上运行,且在此端口
- 在菜单那边找到SQLServer2014,展开找到SQL Server的配置管理器注意以下操作,以自己连接的服务为准修改之后 重启服务
- eclipse导出jar包,cmd指定main类运行
- 主要是为了开发GUI窗口,或者是 1、java项目没有导入第三方jar包的情况 这时候打包就比较简单: ①首先在MyEclipse中打开项目, 右键点击项目,选择“Export”; ②选择Java/JAR file,Next; ③Select the resources to export中可以选择你想要包含的项目文件夹,一些不必要的文件夹就无需放进去了,免得增大空间; 这里有
- 启动java项目时卡在某个点 直到 tomcat 超时 的解决
- 很简单,加入log4j日志,debug级别 ,查看为啥。 结果发现 就是 日志配置文件没加。。。一直卡住
- Java虚拟机学习笔记(2)——一个Java程序在虚拟机中的运行过程
- 一.概述 二.执行细节 3.总结 一.概述 程序执行流程我把它划分为以下几个步骤:编辑源码、编译生成class文件、(加载class文件、运行class字节码文件),其中后两个步骤都是在jvm虚拟机上执行的。 二.执行细节 2.1 一个Java类 package com.javase.string; class Person { ...
- 如何设置域用户仅登录到指定的计算机
- 如何设置域用户仅登录到指定的计算机默认情况下,在AD中新建立帐号以后,这个帐号可以登录到任何一台计算机上,有些不安全,如何限制该帐号仅仅登录到指定的计算机呢?这里主要是在域帐号的属性中设置。打开该帐号的属性,帐户页面,登录到,如下图所示:然后在登录工作站选择“下列计算机”;将要登录到的计算机名字填写,然后确定,即可。3.测试,当使用该帐号没有登录到指定的计算机的时候,系统会提示错误,如下图所示:...
- Server Controller未在主机上运行或未在端口2050侦听
- Domino Server 作为windows服务启动后,启动Domino Console连接服务的时候报“Server Controller未在主机上运行或未在端口2050侦听“这个错误, 解决办法如下: 我的domino的域名和计算机名一样,在hosts中,加入:127.0.0.1 computername 就可以连上服务器。 参考:http://www.2ct
- jar打包命令-指定主类一次搞定!
- jar打包命令-指定主类一次搞定! 最近在百度上有好多朋友询问jar命令的使用方法,更多情况下是为了把Java程序转换成可执行文件,据我所知,现在有两种可行的方法: 1、终端使用jar命令将.class打包成xx.jar文件,然后在META-INF \MAINFEST.MF里面添加主类 Main-Class:主类名 开始本帖主题内容:google了一下,几乎全是采
- tomcat设置管理员在远程(不同)机器上访问管理页面
- tomcat8.5管理员默认只能在安装tomcat的机器上访问,如果想在其他机器上访问,则需要进行配置修改 添加用户和权限(\conf\tomcat-users.xml): 2 修改tomcat管理功能配置文件(/webapps/manager/META-INF/context.xml),注释掉地址限制: allow="
- 运行java类 找不到主类的错误
- 发信人: SuperMMX (笑天子), 信区: Java 标 题: [整理] Java 的 Class Path 和 Package 发信站: BBS 水木清华站 (Mon Apr 9 08:15:01 2001) Java 中的 ClassPath
- java实现程序运行次数限定
- 需求: 限定程序运行次数,当程序运行到限定次数时,提示不能再使用。分析: 需要使用计数变量记录程序执行次数,如果是把计数变量是局部变量或者成员变量,当程序结束后,该变量在内存中会消失,因此需要使用配置信息记录该计数值,当程序运行一次,该值自增一次,配置信息保存到配置文件中。程序每次执行时,先从该配置文件中获取次数,判断是否达到限定值,如果达到就终止程序并输出提示信息,否则自增,并把修改...
- Maven 打包 设置运行主类
- Maven 运行 mvn clean package 命令打包在target目录下生成jar包,如何没有配置指定主类,运行jar会报错,如下lin@lin-laptop:~/测试项目/mvnstudy1/mvnstudy1$ java target/mvnstudy1-1.0-SNAPSHOT.jar 错误: 找不到或无法加载主类 target.mvnstudy1-1.0-SNAPSHOT.jar...
- 大型机汇编(mainframe assembler/HLASM)之CICS调用
- 一般情况下,写一个嵌有CICS调用的HLASM程序,我们只要这样写就可以了: ABC CSECT ... EXEC CICS ... ... END 这样汇编器/编译器在编译的时候就会自动地把诸如DFHEIGBL DFHEISTG DFHEIENT DFHEIRET DFHEIEND这些系统定义的宏给加
- docker swarm如何在指定的node上运行指定的容器
- 描述问题比如我们有worker1,worker2,worker3三个docker host另外加一个manager1(它是swarm的master)来管理它们。如果在manager1上直接docker service create某一个容器的话,比如nginx容器,那么master会来决定挑哪一个node作为nginx容器的运行的host。如果我要nginx容器只跑在worker1上面的话,应该怎么
- java运行机制——程序是怎么跑起来的?
- 平时老见到说什么jvm、加载static变量啥的,大致了解点,但感觉知识点不成系统,故在此整理一下: 在我想当然的感知中,从最底层开始,不管啥跑起来肯定是给电路很多0、1信号,让电路线里的电流流动起来。但最底层的0/1控制线肯定比较繁琐枯燥,在大量的实践中,肯定有些0/1控制事件经常做,经常用,熟能生巧中人们就把这些操作逐渐给封装起来,用最精炼的方式花最少的人工操作代价来
- 新建虚拟机+LINUX虚拟机中部署java项目
- 创建虚拟机: 新建虚拟机教程文档:https://blog.csdn.net/qq_34272964/article/details/79393613 安装图形界面软件包:https://blog.csdn.net/qq_39521554/article/details/79718886 安装图形界面后重启操作:https://www.linuxidc.com/linux/2018-04/1...
- 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在
- 之前开发项目都是用的VS2010,数据库的连接都是内置,非常容易,没遇到太多的配置问题。 个人喜欢换换口味,想试试用Eclipse编写点JDBC,在学习各种数据库知识。使用Sql server 2008时出现了下面问题: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属
- 将web项目部署到linux虚拟机上(一)
- 1.在windows系统上部署web项目非常简单. a.配置java环境变量JAVA_HOME, CLASSPATH和PATH. b.配置Tomcat环境变量CATALINA_HOME. c.将web项目通过IDE工具(例如myeclipse)导出为war包. d.将war包拷贝到tomcat的webapps目录下,执行tomcat的bin目录下startup.bat脚本.
- 吐血整理:VMware安装Linux系统以及运行Java项目
- 一、安装Linux系统 工具:VMware 虚拟机 Linux镜像ISO文件 1.点击创建新的虚拟机,如图操作,一直点击下一步;
- 限制某个程序在规定时间内运行
- 遍历当前系统所有运行的程序,并能设置这些程序运行的时间,运行时间一到 弹出警告提示 受限程序自动终止 非常有创意 值得一看
- 用Linux虚拟机发布java项目
- 我是一名java撸者,17年应届毕业生,虽然学的是java,但是本人对linux有种浓厚的喜爱之情,这几天趁着项目给客户那边部署上线,在自己百度+请教同事的情况下完成了在本机用虚拟机发布项目的流程,现在将过程再梳理一遍,当做自己的经验积累。如果有不对的地方,还望各位朋友见谅。 本人的基础环境: 真机:win7系统,JDK1.8,MySql5.+,tomcat7,开发工具是eclipse(这个不
- 如何将java工程部署到服务器上1
- 总体来说 1, 连接服务器 2, 上传war包工程 3, 启动tomcat 下面一步一步来说: 1,连接服务器:我们需要知道地址(例:202.114.23.34),用户名(例:root),密码(例:123456),端口号(为FileZilla准备的;例:22) 打开终端 输入ssh root@202.114.23.34,连接上后输入密码:123456,
- 组策略7-限制所有软件使用1-允许运行个别软件
- 组策略7-限制所有软件使用-允许运行个别软件 如何让已经默认禁止所有软件运行的情况下使得我们指定的软件可以允许呢? 只需要编辑上一篇《组策略7-限制所有软件使用1》中的“默认所有软件禁止”策略中放开指定的软件即可。 右键编辑“默认所有软件禁止”策略 依次展开“用户配置”—“策略”—“Windows设置”—“安全设置”—“软件限制策略”---“其他规则” 里面已经默认有了2条 ...
- maven 项目,运行main方法时java找不到或无法加载主类
- class路径不对,
- 项目下.java文件采用不同编码方案编译时的编码问题
- 现在有一个项目,在其下有些.java文件采用GBK编码方案,有些.java文件采用UTF-8编码方案。 由《编译.java文件时的编码问题》可知,编译采用GBK编码方案的.java文件,得使用"javac -encoding gbk xxx.java"命令,编译采用UTF-8编码方案的.java文件,得使用"javac -encoding utf8 xxx.java"命令,这样子才能编译
- 虚拟机上运行hadoop的jar包程序。
- 首先,我们在win环境下用Eclipse写好程序,然后导出jar包,我这里是放到虚拟机的root目录下,叫wc.jar。
- 利用Mutex标记限制程序重复运行
- 这是一段小代码, 主要是演示如何利用Mutex来限制一个程序二次运行。