我想原因是这样的
你在创建Socket时, 指定了本地端口, 第一次运行后还没有释放这个端口, 第二次运行还想使用这个端口, 所以就会冲突, 抛出绑定异常. 
通常本地端口都不用指定的, 如果指定的话, 就不应该同时运行两个实例

解决方案 »

  1.   

    肯定没有被别的程序占哈,因为开始运行时,都是正常的,运行完成,马上又运行就不行了,
    netstat -an 显示 本端口time_wait状态,是正常的吗?首次运行程序应该是释放了的吧,为什么再次运行就不行了?而等一会儿又可运行,是此客户端程序有问题,还是服务器有问题?
    请哪位高手指点一下,我的程序有错吗?
      

  2.   

    这样或许会更好一些:finally {
    if(os != null){
     doing something;
    }
    if(is != null){
      doing something;
    }if (sock != null) {
    try {
    sock.close();
    sock = null;
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
      

  3.   

    这样会好一点,但与端口的释放问题无关,因为第一次是正常运行了的,也就是os.close();is.close();是正常执行了的,而再次运行时就不能连接了.
      

  4.   

    是的,我也有这样的问题,同一个端口在用过一次之后,要过一阵子才能用第二次,用netstat看不出哪里有问题