• JAVA入门到精通-第91讲-山寨QQ项目5-一对一的聊天



    聊天:
    希望在界面最上面显示我的QQ号码:显示自己的编号;
    在窗口栏显示自己的编号:

    --------------------


    String  ownerId



    ---------------------------------
    真实的QQ,
    客户端1/2可能直接走局域网;

    借助于服务器进行中转:
    客户端1如果登录成功,Hello,准备和2聊天,
    信息发到服务器:

    (1)如果2不在线,服务器策略:把数据暂存在数据库-message表;
    等2上线,服务器把信息按顺序回送给客户端2;


    (2)如果2在线,服务器和客户端2存在着一个连接,S,通道;
    服务器策略:服务器为了可以完成信息转发,把服务器得到的每一个
    socket[]保存在Hashmap里面;

    对于每一个socket,服务器认为是一个线程,
    当服务器和某个客户端形成一个连接时(Socket),
    服务器端就单开一个线程;
    让该线程与客户端通讯;

    ----------------------------------------------------
    对服务器端进行改造:
    单开一个线程,让该线程与客户端保持通讯:
    -SerConClientThread
    public SerConClientThread(Socket  s)
    把服务器和客户端的连接赋给s


    读的是Message,通过 Message对象进行交互的;

    服务器得到的信息Message;

    -----------------------
    -Message属性的添加:
    发送者,接收者,信息内容,时间等等;
    -----------------------------------


    -----------------------------------------------------------
    -----------------------------------------------------------
    new java.util.Date( ).toString( )

    s要在QqChat里面运用;

    //发送给服务器


    ---------------
    ---------------
    -线程控制的,这条通道已经打通了;

    -2号在线,1号发给2号的信息,通过服务器转给2号 ;
    -服务器只要拿到socket,就好了;

    服务器和getter达成的socket;

    -我们可以把服务器得到的每个socket[客户端],
    保存在Hashmap,用客户的id号标识该socket;

    -ManageClientThread
    Hashmap<String,SerConClientThread> ();
    String    用户ID;
    SerConClientThread   用户线程;

    在线---HashMap里面有ID号;

    public static xxxxxx
    只能有一份HashMap;

    -把线程加入HashMap里面

    -转发是在线程当中发生的
    //
    //
    接收到某个人给某个人发的message对象,
    找到接收人的那个通讯线程,
    再将其发回去;
    //
    ----------
    QqChat必须一直要处于读的状态,做成线程;
    才能进行聊天

    ObjectInputStream  ois=new Object

    转发任务已经完全实现了;

    -----------------------------------
    好友在线,显示彩色头像;
    反之,显示灰色头像;

















  • 相关阅读:
    五、appium自动化之模拟点击、滑动等用户行为
    三、jMeter测试,jason Ectractor和正则表达式获取数组类型
    四、appium实现九宫格滑动和双指缩放操作--TouchAction/MultiAction
    三、定时器--强制等待、显式等待和隐式等待
    一、jMeter实现文件的上传和下载
    二、appium+python find_element定位元素的方法
    二、jMeter测试之输出测试结果到excel文件(jxl.jar)
    一、appium自动化测试--初始化设置
    fourSum
    letterCombinations
  • 原文地址:https://www.cnblogs.com/xuxaut-558/p/10047916.html
Copyright © 2020-2023  润新知