TOMORROW 星辰 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Labview 实例——像 QQ 一样的聊天室程序
Labview是一个很简单的开发平台,图形化的编程。下面给大家分享一个用 Labview 开发的一个像 QQ 一样的即时通讯聊天室,基于 TCP/IP 协议。可以实现多人同时在线聊天,并且可以实时显示在线成员的昵称哦。
下载通道:
https://www.tomorrow.wiki/archives/764
程序框图的保护密码为:www.tomorrow.wiki
功能演示
- 首先用户创建一个聊天室;
图 7-1-1 客户端 0 创建聊天室
- 接着有两个远程客户端加入聊天室,并开始聊天,可以看到聊天窗口会实时显示聊天内容,Online List 也会显示实时在线的用户;
图 7-1-2 聊天过程中客户端 0 的状态
图 7-1-3 聊天过程中客户端 1 的状态
图 7-1-4 聊天过程中客户端 2 的状态
- 聊天室创建人销毁聊天室后,可以看到,客户端 1 和客户端 2 都在尝试重新连接到聊天室,最终若连续尝试若干次都失败后,就都会退出客户端程序;
图 7-1-5 聊天被销毁后客户端 1 的状态
图 7-1-6 聊天被销毁后客户端 2 的状态
架构设计
总体架构
该程序将采用 C/S(Client/Server)架构来进行设计。服务器程序将作为一个子 VI 程序相对独立于客户端程序,运行在创建聊天室的用户的本地主机上。
服务器架构
- 接收启动或者不启动服务器监听程序的信号;
- 启动服务器监听程序后循环监听是否有新的客户端连接加入,并将其保存到缓存中;
- 服务器程序将轮流从缓存中的客户端读取数据,并将接收到的数据分发到缓存中的所有客户端,当发送失败时则将相对应的客户端从缓存中删除,此部分功能与(2)中的服务器监听程序并行;
客户端架构
- 客户端采用了状态机的设计思想;
- 客户端首先进入初始化状态,根据输入连接到相对应的服务器,然后切换到接收状态;
- 在接收状态中,客户端接收来自服务器的数据。当接收失败时重新回到初始化状态;接收成功则进入发送状态;
- 在发送状态中,客户端若接收到用户的发送指令时则把用户输入的内容发送到服务器去,否则则发送状态指令到服务器。当发送成功时,切换到接收状态;失败时则重新回到初始化状态;