[Asm] 纯文本查看 复制代码
.版本 2
.支持库 iext
.程序集 窗口程序集_启动窗口
.程序集变量 客户, 文本型, , "0"
.子程序 _服务器1_数据到达
.局部变量 当前客户数量, 整数型
.局部变量 发送消息的用户, 文本型
.局部变量 发送的消息, 文本型
.局部变量 i, 整数型
当前客户数量 = 取数组成员数 (客户)
发送消息的用户 = 服务器1.取回客户 ()
发送的消息 = 到文本 (服务器1.取回数据 ())
.计次循环首 (当前客户数量, i)
.如果 (客户 [i] = 发送消息的用户)
' 接受消息的用户=发信用户,不做处理
.否则
服务器1.发送数据 (客户 [i], “<” + 发送消息的用户 + “> ” + 发送的消息 + #换行符, )
.如果结束
.计次循环尾 ()
.子程序 _服务器1_客户进入
.局部变量 加入的客户, 文本型
.局部变量 当前客户数量, 整数型
加入的客户 = 服务器1.取回客户 ()
加入成员 (客户, 加入的客户)
超级列表框1.插入表项 (, 加入的客户, , , , )
超级列表框1.刷新显示 ()
当前客户数量 = 超级列表框1.取表项数 ()
超级列表框1.置列标题 (0, “IP:端口-- 当前客户端:” + 到文本 (当前客户数量))
消息框.加入文本 (到文本 (取现行时间 ()) + “ 用户 ” + 加入的客户 + “ 加入聊天室!” + #换行符)
.子程序 _服务器1_客户离开
.局部变量 离开的客户, 文本型
.局部变量 位置N, 整数型
.局部变量 当前客户数量, 整数型
' 获取离开的客户ip,用这个ip对比数组内的成员,找到成员位置并删除,刷新数组,再刷新显示列表框成员
离开的客户 = 服务器1.取回客户 ()
位置N = 超级列表框1.查找表项 (离开的客户, , 真, 0)
删除成员 (客户, 位置N, 1)
超级列表框1.删除表项 (位置N)
超级列表框1.刷新显示 ()
当前客户数量 = 超级列表框1.取表项数 ()
超级列表框1.置列标题 (0, “IP:端口-- 当前客户端:” + 到文本 (当前客户数量))
消息框.加入文本 (到文本 (取现行时间 ()) + “ 用户 ” + 离开的客户 + “ 离开聊天室!” + #换行符)
.子程序 _发送按钮_被单击
.局部变量 当前客户数量, 整数型
.局部变量 i, 整数型
当前客户数量 = 取数组成员数 (客户)
.计次循环首 (当前客户数量, i)
服务器1.发送数据 (客户 [i], “服务器:” + 发送框.内容 + #换行符, )
.计次循环尾 ()
消息框.加入文本 (“服务器:” + 发送框.内容 + #换行符 + #换行符)
.子程序 _超级列表框1_右键单击表项
.局部变量 当前客户数量, 整数型
服务器1.发送数据 (超级列表框1.取标题 (超级列表框1.现行选中项, ), “您已被移出聊天!” + #换行符, )
服务器1.断开客户 (超级列表框1.取标题 (超级列表框1.现行选中项, ))
当前客户数量 = 超级列表框1.取表项数 ()
超级列表框1.置列标题 (0, “IP:端口-- 当前客户端:” + 到文本 (当前客户数量))
.子程序 _清空用户_被单击
.局部变量 选择Z, 整数型
.局部变量 当前客户数量, 整数型
.局部变量 i, 整数型
选择Z = 信息框 (“清除将导致客户端断开连接,是否继续清除?”, #确认取消钮 + #警告图标, “断开所有用户?”, )
.如果真 (选择Z = 0)
当前客户数量 = 取数组成员数 (客户)
.计次循环首 (当前客户数量, i)
服务器1.发送数据 (客户 [i], “服务器主动与您断开连接!” + #换行符, )
服务器1.断开客户 (客户 [i])
.计次循环尾 ()
超级列表框1.全部删除 ()
超级列表框1.刷新显示 ()
.如果真结束