自制APP连接远程服务器


前言

本案例是实现自制手机APP连接远程服务器,同时实现收发数据,发送和接收16进制数据功能;APP的开发是使用了E4A软件软件下载链接,远程服务器使用的是阿里云服务器。


一、使用操作

1. 连接远程服务器

如果没有远程服务器的朋友,可以连接OneNET的服务器试试接入地址
在这里插入图片描述

2. 连接本地服务器

如果没有远程服务器的朋友,可以试试连接本地服务器,但前提是在电脑上使用模拟器运行APP,安装在手机上的连接不了。
使用SSCOM开设服务器,本地IP地址默认,端号设置为1234。
在这里插入图片描述

二、APP代码

所有的代码如下:


变量 IP地址 为 文本型
变量 端口号 为 整数型

事件 主窗口.创建完毕()

	IP地址框.内容 = 读取设置("IP地址")
	端口框.内容 = 读取设置("端口号")
	
结束 事件

事件 图片框_返回.被单击()
	返回桌面()
结束 事件


事件 退出标签.被单击()
	
	结束程序()
	客户1.断开连接()
	
结束 事件

事件 连接按钮.被单击()
	
	如果 连接按钮.标题 = "连接" 则
	    IP地址 =  IP地址框.内容
	    端口号 = 到整数(端口框.内容)
	    客户1.连接服务器(IP地址,端口号,5000)
		连接按钮.标题 = "断开"
		
	否则 
		客户1.断开连接()
		连接按钮.标题 = "连接"
		弹出提示("已断开连接")
	结束 如果

结束 事件

事件 客户1.连接完毕(连接结果 为 逻辑型)
	
	如果 连接结果 = 真 则
		弹出提示("连接成功")
			'连接成功后保存信息,下次软件打开读取
		保存设置("IP地址",IP地址框.内容)
		保存设置("端口号",端口框.内容)

	否则 
		弹出提示("连接服务器失败")
		连接按钮.标题 = "连接"
	结束 如果
	
结束 事件

事件 客户1.连接断开()
	
	弹出提示("连接已断开")
	连接按钮.标题 = "连接"
	
结束 事件

事件 发送按钮.被单击()
	
	变量 结果  为 文本型()
    变量 计次  为 整数型
	变量 数量  为 整数型	
	变量 aa 为 文本型
	变量 bb  为 整数型
	变量 cc 为 文本型
    变量 dd 为 整数型
	变量 ee 为 文本型
	
	如果 发送框.内容="" 则
    	弹出提示("发送内容不能为空!")
		发送框.获取焦点()
    否则如果 HEX发送框.选中 则	
		结果 = 分割文本(发送框.内容," ")
		数量 = (取文本长度 (发送框.内容)-((取文本长度 (发送框.内容)+1)/3-1))/2	
	    变量 数据 为 字节型(数量)
		
		变量循环首 计次=0 至 数量-1 步进 1
    		aa=取文本长度(结果(计次))
    		如果 aa>2  则
    			弹出提示("输入错误不是00-FF的十六进制数并且用空格隔开!如:aa bb cc")
   			否则  
     			cc=取文本中间(结果(计次),0,1)
	 			ee=取文本中间(结果(计次),1,1)
     			dd=寻找文本("0123456789ABCDEF",到大写(cc),0)
	 			bb=寻找文本("0123456789ABCDEF",到大写(ee),0)
     			如果 dd=-1 或 bb=-1 则
     				弹出提示("不是十六进制数请重新输入,并且用空格隔开!如:aa bb cc")
	 				退出
     			否则
     				数据(计次)=到整数(到十进制(结果(计次)))	
     			结束 如果
     		结束 如果		
			' 弹出提示("发送框输入数据格式错误 16进制模式请用空格隔开!")		
		变量循环尾
		客户1.发送数据(数据) '向服务器发送数据
		接收框.内容 = 接收框.内容 & "\n" & "客户端:"& 发送框.内容
	否则 
	    客户1.发送数据(文本到字节(发送框.内容,"GBK"))
		接收框.内容 = 接收框.内容 & "\n" & "客户端:"& 发送框.内容
	 结束 如果	
   接收框.置光标位置(取文本长度(接收框.内容))
结束 事件

事件 客户1.收到数据(数据 为 字节型())
	
	变量 aa 为 文本型
	变量 bb 为 文本型
	变量 i 为 整数型
	如果 HEX接收框.选中 则
		变量循环首 i = 0 至 取数组下标(数据,1)-1
			aa = 取文本右边(到十六进制(数据(i)),2)
			bb = bb &" "& 到大写(aa)		
		变量循环尾
		接收框.内容=接收框.内容 & "\n服务器:" &  bb
    否则
	    接收框.内容 = 接收框.内容 & "\n服务器:" & 字节到文本(数据,"GBK") '收到服务器发来的字节集数据,转换成文本
    结束 如果	 
	
	接收框.置光标位置(取文本长度(接收框.内容))
	
结束 事件

事件 清空按钮.被单击()
	
	接收框.内容 = 空
	
结束 事件


总结

案例自制的APP只能连接公网IP地址,如果是自己电脑开设服务器,一般情况下服务器的地址都是内网IP地址,想要连接内网IP地址,要做到内网穿透才行。
如果是在模拟器上运行APP,那就可以连接电脑的开设的服务器。

猜你喜欢

转载自blog.csdn.net/NICHUN12345/article/details/125117756