C/S:采用socket+多线程+io+swing(awt)技术;
基本思路:在服务器端建立一个连接端口,专门用来让客户端连接服务器端,并且不断的监听客户端的连接请求。当用户请求连接上服务器的时候,为登录的用户开启一个端口,并且把这个端口放入一个全局的list容器中,同时给这个用户分配一个线程,用来不断的监听list容器中的端口是否有新的用户请求连接(或是否有用户发送信息过来),有的话为全部或指定的端口发送信息(io)。
客户端在连接上服务端后,同时开始一个线程,不断监听服务端是否有信息发送过来。在客户端发送信息的时候,通过socket向服务器端发送信息。
B/S:一般采用servlet+ajax+js+html
基本思路:用户登录的时记录下用户的session或把用户信息存放在全局的map容器中,以用户名为key或者session,消息内容存放在一个list容器中,并把存放消息的list容易设为value。用户发送信息并提交的时候,后天服务器收到信息,根据用户对象发送给不同对象(群聊或私聊),从map中遍历出指定的聊天对象,存放消息内容的list中加入所发送的信息。
客户在聊天页面中,通过ajax不断的访问后台,查看是否有新的信息,有则通过js,把信息在页面中显示出来。