即时通讯系统探究
2014-02-28 21:04
134 查看
(1)多个线程访问服务端的时候,服务端应该怎样进行多个线程的管理与处理
一个号一个进程一个线程多个包发送
不管是客户端还是服务端,只要连上了之后,可以看做在两端连上了一个来去的双传送带,传动装置只有一个,即只有一个线程。这个线程只有在传送装置不转的时候才会停下来。传送装置是这样工作的:
一对一:
在传送装置的两端有一个智能的数据包处理器,当向我方来的数据包,我会先接收,然后拆包处理;对于我要发送的数据,也要先装包再发送。
多对多:
我们可以这样想象,有很多个传送装置的某一端都连着一个超级处理器(服务端),可以快速处理你与别人的信息;
所以,为什么能做到一个服务端,能服务多个客户端,其实是因为socket虽然会收到很多包,但是在某一个时刻只收到一个包,那么服务端处理的就是这个包。
(2)关于套接字(socket)传输中的序列化和反序列化:
1.Serializable
2.以前用的Arayy ar = new ArrayList();或者Map map = new HashMap();
这样用的原因都是因为ArrayList和HashMap实现了Serializable这个接口,这样在进行网络传输中就能对数据进行序列化和反序列化
3.关于利用ObjectOutputStream.writeObject()和ObjectInputStream.readObject()进行接收发送数据的序列化
everyone的那个userbean是用来群聊的,即数据库那个“0000”
一个号一个进程一个线程多个包发送
不管是客户端还是服务端,只要连上了之后,可以看做在两端连上了一个来去的双传送带,传动装置只有一个,即只有一个线程。这个线程只有在传送装置不转的时候才会停下来。传送装置是这样工作的:
一对一:
在传送装置的两端有一个智能的数据包处理器,当向我方来的数据包,我会先接收,然后拆包处理;对于我要发送的数据,也要先装包再发送。
多对多:
我们可以这样想象,有很多个传送装置的某一端都连着一个超级处理器(服务端),可以快速处理你与别人的信息;
所以,为什么能做到一个服务端,能服务多个客户端,其实是因为socket虽然会收到很多包,但是在某一个时刻只收到一个包,那么服务端处理的就是这个包。
(2)关于套接字(socket)传输中的序列化和反序列化:
1.Serializable
2.以前用的Arayy ar = new ArrayList();或者Map map = new HashMap();
这样用的原因都是因为ArrayList和HashMap实现了Serializable这个接口,这样在进行网络传输中就能对数据进行序列化和反序列化
3.关于利用ObjectOutputStream.writeObject()和ObjectInputStream.readObject()进行接收发送数据的序列化
everyone的那个userbean是用来群聊的,即数据库那个“0000”
相关文章推荐
- hdu_1859_最小长方形_201402282048
- Matlab 程序结束后发送短信或者邮件
- c++中string类和vector类比较
- Your Ubuntu 12.04 is running in 2D mode,Many features will not be available.(on Ubuntu 12.04)解决方法
- SSL 的工作原理
- 简单工厂模式的UML类图与源码实现
- json
- hdu 3642 Get The Treasury 扫描线求长方体体积交
- TCP/IP网络编程之四书五经
- u盘装系统
- Centos下基于多端口虚拟主机发布网站项目
- MySQL批量SQL插入性能优化
- MySQL批量SQL插入性能优化
- 九度OJ 1035 找出直系亲属
- Linux C++ read 和 write,open 函数的使用
- 数字签名是什么?
- 图片滚动标签 html
- 原来还有这样的记词方法_Java版记不规则动词_博主推荐
- MVC JS 框架
- OpenJudge/Poj 1915 Knight Moves