是这样的,我有2个程序,都需要用到4567断口
能不能在
serverSocket s   =   new   serverSocket(4567);  
之前判定下这个断口是不是已经占用了,如果占用了就迟延1秒再建立
代码如下
public String usb(){
try{
serverSocket=new ServerSocket(4567);
}catch (Exception e) {
  e.printStackTrace();
  System.out.println("服务存在了");
long ntime=System.currentTimeMillis();
long etime=0;
for(;;)//迟延1秒
{
etime=System.currentTimeMillis();
if(etime-ntime>1000)
{
break;
}
}
usb();//再次启动
}
System.out.println("服务器启动");
}或者说,有别更好方法来实现,帮忙说下
谢谢

解决方案 »

  1.   

    好像没有什么方法检查端口是否被占用,只能通过抛出异常来判断
    另延时不要用for循环那样很占cpu资源
    用Thread.sleep(1000);
      

  2.   

    你把端口写在文件中 
    从文件中读到端口,比较new的端口 
    一样就占用 1秒后重起 
      

  3.   

    如果两个程序都是Java程序,推荐使用提供者模式,同步读取和释放所需要的端口。