建立socket服务的问题!急!~~~~~~

MattHgh 2008-03-04 05:23:22
是这样的,我有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("服务器启动");
}


但是这个方法不稳定,有时会出错,或出现断口被站用错误
这个代码怎么改进?或者说,有别更好方法来实现,帮忙说下
谢谢
...全文
104 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zsq007zsq007 2008-03-05
  • 打赏
  • 举报
回复
我认为主要还是在每次程序退出得时候,把socket close掉! 保证端口不会被占用!
MattHgh 2008-03-04
  • 打赏
  • 举报
回复
采用延迟时间再建立服务的方法是最好方法了吗?
老紫竹 2008-03-04
  • 打赏
  • 举报
回复
  public String usb() {
while (serverSocket == null) {
try {
serverSocket = new ServerSocket(4567);
} catch (Exception e) {
try {
Thread.sleep(2000);
} catch (Exception ex) {
}
}
}
System.out.println("服务器启动");
return "OK";
}
wenly0561010 2008-03-04
  • 打赏
  • 举报
回复
试试这个:

public void usb() {
try {
serverSocket = new ServerSocket(4567);
} catch (Exception e) {
System.out.println("服务存在了");
try {
Thread.sleep(1000);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
usb();// 再次启动
}
System.out.println("服务器启动");

}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧