zoukankan      html  css  js  c++  java
  • 即时通讯系统探究

    (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”

  • 相关阅读:
    Python 字典方法(.get .item)
    Python格式化输出
    R sprintf函数
    r 中sub() gsub()等匹配与替换函数
    R read.csv数据框
    C#中使用ref、out、params例子
    C#中的三种委托方式:Func委托,Action委托,Predicate委托
    tfs强制撤销解锁命令
    Json序列化与反序列化
    XPath语法在C#中使用XPath示例第二讲
  • 原文地址:https://www.cnblogs.com/x_wukong/p/3574311.html
Copyright © 2011-2022 走看看