由C#编写基于Socket的大聪明家具模拟系统
- lIPAddress类:包含了一个IP地址
- lIPEndPoint类:包含了一对IP地址和端口号
- Socket (): 创建一个Socket
- Bind(): 绑定一个本地的IP和端口号(IPEndPoint),用于绑定 IPEndPoint 对象,在服务端使用。
- Listen(): 让Socket侦听传入的连接尝试,并指定侦听队列容量
- Connect(): 初始化与另一个Socket的连接,在客户端使用,用于连接服务端。
- Accept(): 接收连接并返回一个新的socket
- Send(): 输出数据到Socket
- Receive(): 从Socket中读取数据
- Close(): 关闭Socket (销毁连接)
- TCP 数据包结构设计
- TCP 数据包发送和接收过程
1.创建socket 2.链接服务器 3.接收数据 4.关闭套接字
空调温度,模式的远程控制
大聪明家居
客户端——发送操作指令
服务端——解析操作指令,向设备端发送命令
设备端——接受并执行命令
- 开关灯
- 拉窗帘
- 电饭煲
- 空调
- 插排
- 热水器
设备名+':OP'+操作标识码+(其他)
例: 调整空调温度为25AirCondition:OP225
操作标识码
- 0 - 关闭设备
- 1 - 打开设备
- 2 - 调整设备温度
- ...
设备名 + ':OP '+ 操作标识码 +(其他)
例: 调整空调温度为25
AirCondition:OP225
操作标识码
- 0 - 关闭设备
- 1 - 打开设备
- 2 - 调整设备温度
- ...
向设备端发送 check
,返回Name-
+ 设备名
设备名 + ':Close'
例:空调连接断开
AirCondition:Close
接收到check
时返回Name-
+ 设备名
sockets
存储设备名到socket
的映射
socketNames
存储socket
到设备名的映射
Column | Type | Comment | PK | Nullable | Default |
---|---|---|---|---|---|
userid | int | 用户ID | YES | NO | |
username | varchar(255) | 用户名 | NO | ||
password | varchar(255) | 密码 | NO |
Column | Type | Comment | PK | Nullable | Default |
---|---|---|---|---|---|
num | int | 端口号 | NO | ||
userid | int | 用户ID | YES | NO | |
pid | int | 进程Id | NO |
使用SunnyUI框架搭建界面,令界面更加美观,从而提高用户使用体验
使用VS发布功能将程序打包上传至服务器,令服务端在服务器上运行
C#控制台程序如何发布到服务器Linux上运行 - 编程 - 中国红客联盟 - Powered by Discuz! (chinesehongker.com)
编写合包函数和数据包解析函数,令C#的Socket可以与实现WebSocket通信
WebSocket合包函数,发送大于126字节和大于65535字节的处理
后端使用SSM框架对代码快速编写。
利用管道与输出重定向等知识对shell
脚本进行编写。
开启服务器安全组50000-51000
端口后在Java后端中使用net.java.dev.jna
包中的Runtime
类来执行编写好的shell
脚本命令,从而开启对应端口的服务器,以此实现了Java后端对端口的管理操作。
Process proc = Runtime.getRuntime().exec("echo " + num.toString() + " | dotnet /home/C#/out/ServerConsole.dll > /home/C#/logs/" + num.toString() + ".txt");
删除所有关于 dotnet
的进程sudo kill -9 $(pidof dotnet)
如出现下图错误
导入SunnyUI包即可
右键项目,点击管理NuGet程序包
点击浏览
选项卡
在搜索框中输入sunnyui
点击第一个搜索结果后右侧选择安装即可
完成上述操作后关闭报错页面,重新生成解决方案再打开就好啦