初学java,在写一个网络程序,客户端连接到服务端后,向服务端发送一条数据,然后两边都close。第二次我又 new Socket(IP,Port)的时候就没有反应了,这种情况应该怎样处理呢?

解决方案 »

  1.   

    我只是关闭了连接上来的那个客户端的Socket,没有关闭ServerSocket
      

  2.   

    一般的服务器的等待连接是当客户端连接上了以后,就不区分谁是客户端谁是服务器了,也就是说你服务器的ServerSocket已经变成与客户端的Socket一样了。如果需要连接断开后客户端还能连接上的话,需要在服务器端实现多线程,使用while的死循环来一直等待客户端的连接。 ServerSocket ss=new ServerSocket(8899);
    while(true){
    Socket socket=ss.accept();
    //启动一个线程来处理接收到客户端连接后的处理
    HandlerRead handler=new HandlerRead(socket);
    handler.start();
    }
      

  3.   

    dc=new DataContainer();
    mainServer ms=new mainServer(11111,dc);
    ms.start();
    ss=new ServerSocket(12345);
    while(true)
    {
    s=ss.accept();
    Recv recv=new Recv(s,dc);
    recv.start();
    }
    我的代码是这样写的,然后再线程里关闭了s
      

  4.   

    ss也关了?
    s.close()就行了