Labview实例——像QQ一样的聊天室程序

计算机网络 TOMORROW 2年前 (2018-06-15) 16552次浏览 25个评论 扫描二维码

客户端 VI 程序

作为与用户直接接触的存在,具有一个用户体验良好的前面板,并且需要完成上层通信协议的实现和对服务器 VI 的调用。

Labview 实例——像 QQ 一样的聊天室程序

  • 客户端程序运行时首先对前面板的控件进行“禁用”属性设置,接着,等待事件发生。
  • 当 Create 按钮事件触发时,客户端程序将传递一个“真”常量给服务器子 VI,服务器子 VI 程序就会开启并运行服务。

Labview 实例——像 QQ 一样的聊天室程序

  • 若是 Join 事件被触发,那么客户端程序将传递一个“假”常量给服务器子 VI,服务器子 VI 则不会开启服务。

Labview 实例——像 QQ 一样的聊天室程序

  • 当 Create 事件或是 Join 事件被触发后都会进入到状态机模式,状态机模式有三个状态,分别是 initial、receive 和 send。首先进入的是 initial 状态,initial 状态会根据用户输入的 IP 和端口号与服务器建立连接,若是建立连接成功,则会进入到 send 状态;若是建立连接失败,则会重复建立连接若干次,连续若干次失败后就会退出状态机,结束整个程序。

Labview 实例——像 QQ 一样的聊天室程序

  • 在 send 的状态中,会检测 Send 按钮是否被按下,若被按下则会将用户输入框中的内容,用户昵称按照通信协议打包并发送到服务器;若 Send 按钮没有被按下,则会进入一个“假”的条件分支中,在该分支中通过一个累加器实现,该分支每运行 10 次就会发送一个“ONLINE”+ 用户昵称 的在线状态指令到服务器。当发送成功时,则切换到 receive 状态,否则重新进入 initial 状态。

Labview 实例——像 QQ 一样的聊天室程序

Labview 实例——像 QQ 一样的聊天室程序

  • 在 receive 状态中,客户端会按照通信协议接收来自服务器端的数据,倘若是用户发送的聊天内容,则显示到聊天窗口中;若是“ONLINE”+用户昵称 的在线状态指令则不显示到聊天窗口,而是通过一个子 VI 的处理不重复地把用户昵称显示到 Online List 中,并且 Online List 每隔 200 个状态机循环就会被清空,如此就可以保证显示在 Online List 中的用户都是实时在线的;

Labview 实例——像 QQ 一样的聊天室程序

 

以上便是Labview在线聊天室的设计过程。如有疑问欢迎留言讨论。


TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Labview 实例——像 QQ 一样的聊天室程序
喜欢 (26)
TOMORROW
关于作者:
一个从石头坑掉到泥坑里的攻城狮。
香蕉香菇发表我的评论  请填写正确的 个人信息
取消评论
表情 加粗 斜体 签到
(25)个小伙伴在吐槽
  1. 原创应该得到积极提倡。
    动听的人生2020-06-02 16:22 回复 Windows 7 | Firefox浏览器 76.0
  2. 可以的
    动人滴西瓜2020-05-27 15:37 回复 Windows 7 | 未知浏览器
1 2