Socket长连接如何被动接收服务器传递过来的数据?   
       除了死循环还有其他方法不?

解决方案 »

  1.   

    一般,长连接,都分上行连接和下行连接,进行数据的传递。
    网络拓扑图中,服务端一般都放置在客户端的上面,那么,客户端向服务端发送信息的连接,称为上行连接。
    同理,服务端向客户端发送信息的连接,称为下行连接。当然,发送信息,也采用“一问一答”的方式。
    比如,客户端向服务端发送一个上行信息,我们称为上行请求数据,服务端接收后,会发给客户端一个响应信息,我们称为上行应答数据。这两个数据,都使用的同一个连接(同一个Socket)来进行交互。客户端要接收服务端的下行信息,可以自己创建一个ServerSocket,监听服务端的下行连接,
    之后处理数据。当然,客户端也可以登录服务器,对接收的数据进行监听,这种情况下,不用死循环,基本没什么新花样可玩。话说,服务端对接收数据的监听,不也是死循环么。楼主要是觉得,死循环里面调用的方法,总是会被阻塞,程序正常退出困难,可以考虑NIO嘛,
    可惜NIO编程复杂度要大很多。
      

  2.   

    长连接嘛通常我会采用mina这个不错的框架来做