http://expert.csdn.net/Expert/topic/1104/1104089.xml?temp=7.117862E-02 给你一个例子,是利用ServerSocket和线程实现的 import java.net.*; import java.io.*; public class CZar extends Thread { private int dport=15674; private String message="There has been a CZar!!!"; public CZar() { this.setDaemon(true); this.start(); }
}可以在你的程序中直接使用在开始的时候加上,如 CZar c=new CZar(6780/*port*(/,"there has been a instance running!!");就可以了。 可能也有其他的方法解决这个问题
首先先谢谢大家,我试了一些方法:首先我想请问一些“hhv”大虾:import java.lang.*; import java.util.*;public class testTwo { public static void main(String[] args) { CZar c=new CZar(6780,"there has been a instance running!"); testTwo instance = new testTwo(); instance.runOneEver(); } public void runOneEver(){ while (true) { System.out.println("runOneEver : runOneEver is executing..."); } } }这么调用对不对?如果对的话,程序结果是这样的:我打开了两个dos窗口,暂且称之为A,B; 再A窗口执行: java testTwo; 程序一直打印“runOneEver : runOneEver is executing...”;再在B窗口窗口执行: java testTwo; 程序一直也打印 “runOneEver : runOneEver is executing...” 只不过只打印了几十行,然后打印“there has been a instance running!”,接着退出了该程序。也就是他还是执行了。不是太符合要求。接着是“signboy(横)”和 farawayzheng_necas(遥远) 大虾: 写文件这个方法可行,但不符合我的要求。再是“kare(小李飞刀的飞,小李飞刀的刀。) ”大虾: 这个不好用。其他我不会用,就没有试过。 不知各位大虾还有什么方法没有? 小弟先谢过了!!!!!!
着确实是一个问题,也是我没有想的主要是没有考虑到线程的问题,惭愧!我把我的原程序修改了一下,相信可以处理你所提出的情况,至于有没有其他的问题,我不敢下定论。 import java.net.*; import java.io.*; public class CZar extends Thread { private int dport=15674; private String message="There has been a CZar!!!"; public CZar() { this.start(); }
袄,应该是这样的。不然会不好看 import java.net.*; import java.io.*; public class CZar extends Thread { private int dport=15674; private String message="There has been a CZar!!!"; public CZar() { this.start(); }
刚刚的程序在严格的意义上,并发条件下还是不严密的。我修改了一点如下: import java.net.*; import java.io.*; public class CZar extends Thread { private int dport=15674; private String message="There has been a CZar!!!"; public CZar() { this.start(); }
System.setProperties("App","1");Properties props = System.getProperties();
props.getProperty("App")应用推出时设置"App"为0
给你一个例子,是利用ServerSocket和线程实现的
import java.net.*;
import java.io.*;
public class CZar extends Thread
{
private int dport=15674;
private String message="There has been a CZar!!!";
public CZar()
{
this.setDaemon(true);
this.start();
}
public CZar(int port,String message )
{
this.dport=port;
this.message=message;
this.setDaemon(true);
this.start();
}
public CZar(int port)
{
this.dport=port;
this.setDaemon(true);
this.start();
}
public CZar(String message)
{
this.message=message;
this.setDaemon(true);
this.start();
}
public void run()
{
try{
while(true){
ServerSocket ds=new ServerSocket(dport);
ds.accept();
}
}
catch(BindException e)
{
System.err.println(message);
System.exit(1);
}
catch(IOException e)
{
System.err.println(e);
e.printStackTrace();
}
}
}可以在你的程序中直接使用在开始的时候加上,如
CZar c=new CZar(6780/*port*(/,"there has been a instance running!!");就可以了。
可能也有其他的方法解决这个问题
import java.util.*;public class testTwo { public static void main(String[] args) {
CZar c=new CZar(6780,"there has been a instance running!");
testTwo instance = new testTwo();
instance.runOneEver();
} public void runOneEver(){
while (true) {
System.out.println("runOneEver : runOneEver is executing...");
}
}
}这么调用对不对?如果对的话,程序结果是这样的:我打开了两个dos窗口,暂且称之为A,B;
再A窗口执行:
java testTwo;
程序一直打印“runOneEver : runOneEver is executing...”;再在B窗口窗口执行:
java testTwo;
程序一直也打印 “runOneEver : runOneEver is executing...”
只不过只打印了几十行,然后打印“there has been a instance running!”,接着退出了该程序。也就是他还是执行了。不是太符合要求。接着是“signboy(横)”和 farawayzheng_necas(遥远) 大虾:
写文件这个方法可行,但不符合我的要求。再是“kare(小李飞刀的飞,小李飞刀的刀。) ”大虾:
这个不好用。其他我不会用,就没有试过。
不知各位大虾还有什么方法没有?
小弟先谢过了!!!!!!
import java.net.*;
import java.io.*;
public class CZar extends Thread
{
private int dport=15674;
private String message="There has been a CZar!!!";
public CZar()
{
this.start();
}
public CZar(int port,String message )
{
this.dport=port;
this.message=message;
this.start();
}
public CZar(int port)
{
this.dport=port;
this.start();
}
public CZar(String message)
{
this.message=message;
this.start();
}
ServerSocket ds=null;
public void start()
{
this.setDaemon(true);
try{
Socket s=new Socket("127.0.0.1",this.dport);
System.out.println(this.message);
System.exit(1);
}
catch(ConnectException e)
{
e.printStackTrace();
try{
ds=new ServerSocket(dport);
}catch(IOException ie){ie.printStackTrace();}
super.start();
}
catch(IOException ie){ //unknown host exception
System.err.println(ie);
ie.printStackTrace();
}
}
public void run()
{
while(true){
try{
ds.accept();
}
catch(IOException e)
{
System.err.println(e);
e.printStackTrace();
}
}
}
}
import java.net.*;
import java.io.*;
public class CZar extends Thread
{
private int dport=15674;
private String message="There has been a CZar!!!";
public CZar()
{
this.start();
}
public CZar(int port,String message )
{
this.dport=port;
this.message=message;
this.start();
}
public CZar(int port)
{
this.dport=port;
this.start();
}
public CZar(String message)
{
this.message=message;
this.start();
}
ServerSocket ds=null;
public void start()
{
this.setDaemon(true);
try{
Socket s=new Socket("127.0.0.1",this.dport);
System.out.println(this.message);
System.exit(1);
}
catch(ConnectException e)
{
try{
ds=new ServerSocket(dport);
}catch(IOException ie){ie.printStackTrace();}
super.start();
}
catch(IOException ie){ //unknown host exception
System.err.println(ie);
ie.printStackTrace();
}
}
public void run()
{
while(true){
try{
ds.accept();
}
catch(IOException e)
{
System.err.println(e);
e.printStackTrace();
}
}
}
}
但是Java也就只能这样了
唉
import java.net.*;
import java.io.*;
public class CZar extends Thread
{
private int dport=15674;
private String message="There has been a CZar!!!";
public CZar()
{
this.start();
}
public CZar(int port,String message )
{
this.dport=port;
this.message=message;
this.start();
}
public CZar(int port)
{
this.dport=port;
this.start();
}
public CZar(String message)
{
this.message=message;
this.start();
}
ServerSocket ds=null;
public void start()
{
this.setDaemon(true);
try{
Socket s=new Socket("127.0.0.1",this.dport);
System.out.println(this.message);
System.exit(1);
}
catch(ConnectException e)
{
try{
ds=new ServerSocket(dport);
}catch(IOException ie){ie.printStackTrace();}
super.start();
}
catch(IOException ie){ //unknown host exception
System.err.println(ie);
ie.printStackTrace();
}
}
public void run()
{
while(true){
try{
ds.accept();
}
catch(BindException e){
System.err.println(this.message);
System.exit();
}
catch(IOException e)
{
System.err.println(e);
e.printStackTrace();
}
}
}
}
new CZar(23456/*你期望的端口号*/,
message/*打印的信息*/);
就可以了