服务端是用易语言编写,建立TCP服务器在固定端口进行监听,界面如图:
.版本 2
.支持库 iext
.支持库 spec
.程序集 窗口程序集_启动窗口
.子程序 _服务器1_客户进入
.局部变量 未处理数据, 文本型
.局部变量 已处理数据, 文本型, , "0"
.局部变量 x2, 整数型
.局部变量 i, 整数型
未处理数据 = 服务器1.取回客户 ()
已处理数据 = 分割文本 (未处理数据, “:”, )
x2 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (x2, 0, 已处理数据 [1])
超级列表框1.置标题 (x2, 1, 已处理数据 [2])
编辑框1.加入文本 (到文本 (取现行时间 ()) + “ ” + “来自:” + 已处理数据 [1] + “的消息:” + #换行符 + “已连接服务器” + #换行符)
.子程序 _服务器1_客户离开
.局部变量 未处理数据, 文本型
.局部变量 已处理数据, 文本型, , "0"
.局部变量 i, 整数型
服务器1.取回客户 ()
未处理数据 = 服务器1.取回客户 ()
已处理数据 = 分割文本 (未处理数据, “:”, )
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 1) = 已处理数据 [2])
超级列表框1.删除表项 (i - 1)
编辑框1.加入文本 (到文本 (取现行时间 ()) + “ ” + “来自:” + 已处理数据 [1] + “的消息:” + #换行符 + “已断开服务器” + #换行符)
.否则
.如果结束
.计次循环尾 ()
.子程序 _服务器1_数据到达
.局部变量 data, 文本型
.局部变量 未处理数据, 文本型
.局部变量 已处理数据, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 a, 文本型, , "0"
未处理数据 = 服务器1.取回客户 ()
已处理数据 = 分割文本 (未处理数据, “:”, )
data = 到文本 (服务器1.取回数据 ())
调试输出 (data)
.判断开始 (data = “ssdk”)
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 1) = 已处理数据 [2])
超级列表框1.置标题 (i - 1, 2, “宿舍灯控”)
.否则
.如果结束
.计次循环尾 ()
.判断 (data = “APP”)
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 2) = “宿舍灯控”)
服务器1.发送数据 (服务器1.取回客户 (), “回执信息” + “||” + “灯控:” + 超级列表框1.取标题 (i - 1, 0) + “目前在线”, 5000)
.否则
.如果结束
.如果 (超级列表框1.取标题 (i - 1, 1) = 已处理数据 [2])
超级列表框1.置标题 (i - 1, 2, data)
.否则
.如果结束
.计次循环尾 ()
.判断 (data = “open”)
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 2) = “宿舍灯控”)
a = 分割文本 (编辑框1.内容, #换行符, )
.如果 (a [取数组成员数 (a)] = “灯已打开”)
.否则
编辑框1.加入文本 (到文本 (取现行时间 ()) + “ ” + “来自:” + 已处理数据 [1] + “的消息:” + #换行符 + “灯已打开” + #换行符)
服务器1.发送数据 (超级列表框1.取标题 (i - 1, 0) + “:” + 超级列表框1.取标题 (i - 1, 1), “open”, 5000)
.如果结束
.否则
.如果结束
.计次循环尾 ()
.判断 (data = “close”)
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 2) = “宿舍灯控”)
a = 分割文本 (编辑框1.内容, #换行符, )
.如果 (a [取数组成员数 (a)] = “灯已关闭”)
.否则
服务器1.发送数据 (超级列表框1.取标题 (i - 1, 0) + “:” + 超级列表框1.取标题 (i - 1, 1), “close”, 5000)
编辑框1.加入文本 (到文本 (取现行时间 ()) + “ ” + “来自:” + 已处理数据 [1] + “的消息:” + #换行符 + “灯已关闭” + #换行符)
.如果结束
.否则
.如果结束
.计次循环尾 ()
.默认
.判断结束
.子程序 _时钟1_周期事件
.局部变量 i, 整数型
.计次循环首 (超级列表框1.取表项数 (), i)
.如果 (超级列表框1.取标题 (i - 1, 2) = “宿舍灯控”)
服务器1.发送数据 (超级列表框1.取标题 (i - 1, 0) + “:” + 超级列表框1.取标题 (i - 1, 1), “link”, 5000)
.否则
i = i + 1
调试输出 (i)
.如果结束
.计次循环尾 ()
PS:因为用的是易语言自带的支持库,所以原始的服务器组件是无法在客户进入时获得用户句柄的,所以采用列表框对来访用户进行记录,在写树莓派那边的python端时,我在连接服务器时会发送几个特殊字符,让服务端识别,在列表对IP进行记录时,备注一列写上“宿舍灯控”。在安卓端发信后利用循环遍历列表寻找python端IP进行数据发送。
附上源码链接:
Comments | NOTHING