美文网首页
QT项目复习3——获取在线用户列表

QT项目复习3——获取在线用户列表

作者: StevenHD | 来源:发表于2020-12-22 16:22 被阅读0次
大纲

二、客户端

  • 登录功能的话是发送登录数据包sendLogin(),那么获取用户列表也要发送列表数据包sendList()——
  • 客户端接下来处理服务器回复的列表应答包
  • 接下来解析列表应答包——
  • 难点:【用户列表】不能只发一次,需要定时器来实现发多次列表——

1.2 定时器

  • QTimer

当时间到的时候,就触发sendList()函数(这里并不是服务器直接推送到各用户上,而是一个应答服务器
  • 所以我们在登录成功,拿到ID后,启动定时器即可——
  • 为了列表不出现重复的情况,我们要将列表清空——

二、服务器端

  • 要把在线用户的ID全部返回,所以要事先保存一下ID,可以将ID保存在链表

每当一个用户进来,就在链表中插入一个节点

  • 创建链表头节点

可以在结构体node中扩展,比如加入buf,加入name这些,我们的话这里就加入套接字socket即可——


ID就是套接字
  • getlist()函数会传入bufbuf的大小

将整个用户列表都填入到buf
4个字节一个单位的拷贝,将socket套接字拷贝到tmp缓冲区中,然后再将tmp填入buf中去,不断循环,直到链表结束。(往buf中填充所有的在线用户ID)

  • insertList()插入新的节点
  • findList()根据套接字来查找对应的节点
  • findList()主要用于删除节点的时候(deleteList()),遍历,然后删除

2.2 加入链表到服务器中

  • listen调用后,通过create_head()生成head头节点
  • 【连接】创建成功后,插入新的节点insertlist()

这里我们登录成功后,就插入新的节点(文件描述符)——

  • 删除节点的时机——关闭连接的时候
  • 插入和删除都完成后,就是解析【获取列表】命令

将send_buf传进去得到用户列表,然后send_buf在getlist()返回后,send_buf中就存储了用户列表的数据——


getlist()返回的是往send_buf中一共写了多少个字节
  • 接收数据的代码逻辑——

当跳出内层循环后,意味着这个套接字clntfd已经没用了,我们就关闭它,删除它。也意味着当前这个用户已经无效,可以去accept()接收其他用户的三次握手请求了。

相关文章

  • QT项目复习3——获取在线用户列表

    二、客户端 登录功能的话是发送登录数据包sendLogin(),那么获取用户列表也要发送列表数据包sendList...

  • 狼人杀接口文档

    一,基础接口 1 获取省份列表 2 获取城市列表 3 获取区县列表 4 微信用户登录 二,首页 1 获取欢乐局活动...

  • QT项目复习

    概念 一个PushButton按钮显示在Widget窗口上,就是父子窗口 一、内存管理 一定要在堆上建立对象,在栈...

  • 海量用户及时通讯系统

    需求分析 用户注册 用户登录 显示用户在线的用户列表 群聊 点对点聊天 离线留言 界面设计 项目开发前技术储备 项...

  • Qt入门 (一) Qt 6.x 开发环境配置以及HelloWor

    一、下载Qt在线安装器,使用在线安装器来安装你需要的Qt功能模块 Qt包括收费的部分和开源的部分,对于普通用户下载...

  • 【python基础】7-列表

    列表变量赋值 列表切片和修改 列表拷贝 列表方法和混杂 循环 列表推导式 获取列表作为用户输入 从列表中获取随机元...

  • QT项目复习2

    一、客户端登录 首先,信号与槽机制——login(),然后就是connected() 然后,相当于现在已经登录成功...

  • 获取项目列表

    1.项目首页 说明:获取项目的首页列表 URL http://localhost:8080/glove/item/...

  • 迭代接口文档

    1 首页默认界面 2 获取兼职类型列表 3 获取省份列表 4 获取城市列表 5 ...

  • 获取已安装手机列表

    Android 获取已安装应用列表 调研 Android 如何完整的获取到用户已安装应用列表

网友评论

      本文标题:QT项目复习3——获取在线用户列表

      本文链接:https://www.haomeiwen.com/subject/jzdsnktx.html