是的。
Socket就起到这个作用:socket连接上后可以不断开与socket服务器的连接,而保执两点之间的连接(除非意坏事件发生:网络中断,网络出错处理,....)。只要这个连接没有中断,你就可以用它进行两点之间的通信。

解决方案 »

  1.   

    客户/服务器都用多线程实现。
    客户:
          while(true)
          {
             if(exitOk)
                break;
             ...处理Socket连接通信...      }服务:
         while(true)
         {
             if(exitOk)
                break;
             ...处理客户连接...
             if(有连接)
                 启动处理与客户连接操作的线程      }
      

  2.   

    用ServerSocket.accept()进行堵塞,有连接来,会产生一个Socket
      

  3.   

    那客户端不调用close()就可以了
      

  4.   

    ServerSocket.accept()是以堵塞方式进行接收连接。如果你不设setSoTimeout(),accept会一直监听socket的连接。public  void run()
    {
      ServerSocket mServerSocket = null;
      try
      {
         mServerSocket = new ServerSocket(20080,10);
       }
       catch(IOException Serverioe)
       {
         System.err.println("Cannot create ServerSocket error: " + Serverioe);
         return;
       }   while (true)//接受多个用户
       {
          if(!exit)
          {
             //处理断开连接操作
             return false;
           }
           try
           {
               if(mServerSocket != null)
               {
                   mServerSocket.setSoTimeout(1000);//设置ServerSocket等待连接时候为1分钟
                   mSocket = mServerSocket.accept();//等待客户连接,如果1分钟后还没有客户连接,则程序往下走
                   mServerSocket.setSoTimeout(0);
                    }
                    else
                    {
                        return false;
                    }
                }
                catch(Exception timeoutE)
                {            }//end try...catch(Exception timeoutE)            CustomerProc cCustomerProc  = new CustomerProc (this,mSocket);
                cCustomerProc  .start();
                }
            }
    }