我做了个swing查寻软件,我想让运行这个软件的电脑,只运行一个这个称许,当再次启动这个程序时,将最小化的程序激活,并不启动新的程序,就像金山词霸,迅雷什么的一样。我在百度查了很多,有几种方法,我试了其中的一种,端口方法,但在我家就好使,在单位就不好使,我非常困惑,请各位帮忙看看,源代码如下:import java.net.*;public class InstanceControl2 extends Thread {public void run() { try{ Socket sock = new Socket("127.0.0.1", 22222);//创建socket,连接22222端口 System.exit(0); //连接成功,说明有实例存在,则退出 }catch (Exception e) {} try{ ServerSocket server = new ServerSocket(22222);//创建socket,连接22222端口 while (true) { server.accept(); //接受连接请求 } }catch (Exception e) { e.printStackTrace(); }}
public static void main(String a[]){
InstanceControl2 ic = new InstanceControl();ic.start();
}
}
在家就好使,但在单位,无论我把端口号改为多少,这条语句都能执行通过,Socket sock = new Socket("127.0.0.1", 22222);,并执行下面的System.exit(0);请问各位,这是为什么呢?我家是拨号上网,自动获取ip。单位电脑是固定ip的。
public static void main(String a[]){
InstanceControl2 ic = new InstanceControl();ic.start();
}
}
在家就好使,但在单位,无论我把端口号改为多少,这条语句都能执行通过,Socket sock = new Socket("127.0.0.1", 22222);,并执行下面的System.exit(0);请问各位,这是为什么呢?我家是拨号上网,自动获取ip。单位电脑是固定ip的。
解决方案 »
- 用exej4制作的exe程序无法加载oracle驱动
- java.lang包
- java 包的问题
- 请问java个基础问题,高手帮帮忙哦。
- NetBeans中SVN怎么写中文注释
- 有谁知道c#中numericUpDown这个控件在java里面是哪个控件?
- 大家做oa的时候,在邮件部分,一定要用javamail吗?
- javac 多个文件的问题,谢谢?
- 那有 ILOG的JViews 下载 ,事成后,给100分
- 为什么getgarphics()返回空指针?跪求大神(怎么木有人来?新人第一贴啊,加到最高分了啊啊啊)
- java.net.SocketException: Connection reset 分高,在线等!!!!
- Object中包含hashCode()这个方法么?
打开服务端口可能会受到防火墙的影响,也可能和别的端口冲突。
先查一下所在端口是否被占用,未占用的话暂时关闭防火墙试试。
try {
final File file = new File(lockFile);
final RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
final FileLock fileLock = randomAccessFile.getChannel().tryLock();
if (fileLock != null) {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
fileLock.release();
randomAccessFile.close();
file.delete();
} catch (Exception e) {
log.error("Unable to remove lock file: " + lockFile, e);
}
}
});
return true;
}
} catch (Exception e) {
log.error("Unable to create and/or lock file: " + lockFile, e);
}
return false;
}
我单位装的杀毒软件是nod32,我家里也是,为什么在家运行就可以,在单位就不行呢?
我上面的代码中的两个端口号,甚至不一样,在单位都可以通过Socket sock = new Socket("127.0.0.1", 22222);然后执行 System.exit(0); 我十分的纳闷!!随便改端口号,都执行System.exit(0); !!!!!谁能给解释一下?