面试--java实现一个多人图文聊天室(c/s或b/s),写出思路
2012-02-12 15:11
381 查看
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,把信息在页面中显示出来。
基本思路:在服务器端建立一个连接端口,专门用来让客户端连接服务器端,并且不断的监听客户端的连接请求。当用户请求连接上服务器的时候,为登录的用户开启一个端口,并且把这个端口放入一个全局的list容器中,同时给这个用户分配一个线程,用来不断的监听list容器中的端口是否有新的用户请求连接(或是否有用户发送信息过来),有的话为全部或指定的端口发送信息(io)。
客户端在连接上服务端后,同时开始一个线程,不断监听服务端是否有信息发送过来。在客户端发送信息的时候,通过socket向服务器端发送信息。
B/S:一般采用servlet+ajax+js+html
基本思路:用户登录的时记录下用户的session或把用户信息存放在全局的map容器中,以用户名为key或者session,消息内容存放在一个list容器中,并把存放消息的list容易设为value。用户发送信息并提交的时候,后天服务器收到信息,根据用户对象发送给不同对象(群聊或私聊),从map中遍历出指定的聊天对象,存放消息内容的list中加入所发送的信息。
客户在聊天页面中,通过ajax不断的访问后台,查看是否有新的信息,有则通过js,把信息在页面中显示出来。
相关文章推荐
- 面试准备--数据结构与算法(二)--二叉查找树的图文解析及其java实现
- 字符串匹配之KMP算法思路、原理与Java实现
- 笔试面试算法经典--二叉树的镜像-递归与非递归实现(Java)
- java打印三角形的两种思路和实现
- 【LeetCode-面试算法经典-Java实现】【053-Maximum Subarray(最大子数组和)】
- 【LeetCode-面试算法经典-Java实现】【067-Add Binary(二进制加法)】
- Java高性能解析器实现思路及方法
- 【LeetCode-面试算法经典-Java实现】【074-Search a 2D Matrix(搜索二维矩阵)】
- Java: 分页Paging的实现思路和Demo
- Java——网络编程(实现基于命令行的多人聊天室)
- 【LeetCode-面试算法经典-Java实现】【172-Factorial Trailing Zeroes(阶乘尾后0的数目)】
- java 聊天室之 传送图片文字等功能的实现
- JAVA如何实现条件编译(从思路开始)
- java简单Socket聊天室程序的实现
- JAVA实现在Excel2003中,用A表示第一列,B表示第二列...Z表示第26列,AA表示第27列,AB表示第28列...依次列推。请写出一个函数, 输入用字母表示的列号编码,输出它是第几列
- 面试算法java方式实现打印金字塔三角形
- 【LeetCode-面试算法经典-Java实现】【118-Pascal's Triangle(帕斯卡三角形)】
- 剑指Offer面试算法题Java实现
- 【LeetCode-面试算法经典-Java实现】【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】