惊了,学完计网基础TCP、UDP后还能对微信不讲武德?

博主基于计算机网络知识,制作了一个名为ShareOnLan的工具,实现Windows和Android局域网内互传文件和文本。该工具通过UDP广播建立TCP连接,支持开机自启,具有文件保存路径自定义等功能。Android端可通过选择应用分享功能发送文件到PC。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

博主实在是懒得过分,有时候给电脑传个文件还得让我上个微信 ╯^╰,这我直接就忍不了了,反手用上学期学的计网相关知识写了一个局域网传文件文本的小工具,PC端开机自启,以后就不用上微信了(解气
以下是我写的一个小玩意(暂不完善:

ShareOnLan

本博客只是浅显的介绍一下此程序编写的思路和使用方法,查看源码请移步:
github地址:https://github.com/LCiZY/ShareOnLan

简介:
Windows Connect With Android
Windows平台与安卓在局域网下互传、发送文本、文件的小工具
包括Windows端的exe和Android端的app


开发平台与工具

Windows端是基于QT开发的一个GUI程序

Android端是基于Android Studio开发的app


运行原理&设计思路

原理图

对于PC设备A和Android设备A来说,PC设备A和Android设备A只能看到路由器A,Android设备B所在的那一层对于前面说的两个设备来说是内网设备而不可见(因为Android设备B所在的网络是属于路由器A的子网),这也就是为什么你在外面用移动数据不能直接连接家里的没有公网ip的设备了(想连接的话可以用内网穿透工具如frp)。


运行流程

正常流程:

  1. 由Windows端向所在局域网(LAN)广播UDP包,UDP payload包含PC端的IP、端口号、链接密钥(经过简单加密)。
  2. Android端监听UDP广播包,然后解密payload,验证密钥是否正确:若密钥正确,将IP和端口号填在app的对应输入框里,否则不予置理。
  3. Android的监测线程会每隔数秒自动尝试发起TCP连接(本文中暂且称之为“控制链路”),连接至由IP输入框和端口号输入框指定的主机。
  4. 连接成功后,安卓端监测线程停止,UDP监听线程停止。PC端会每隔一段时间通过“控制链路”向Android端发送一条"连接控制消息"(向Android端表明PC端还活着),Android收到后也会通过“控制链路”回应一条"连接控制消息"(向PC端表明Android端还活着)。
  5. 若双方在一个超时时间周期内没有收到对方发来的"连接控制消息",则认为对方因不可抗力已离线,主动关闭连接。Android端更新界面、监测线程会重新开始运行、UDP监听线程也会重新开始监听;PC端更新托盘Tooltips信息。(因不可抗力可能发生这样的情况:其中一方离线,但另一方还傻傻的保留了控制链路的socket,全然不知道发生了什么,以为对方还在)
  6. 发送文本:通过控制链路传输文本消息(理论上应该另开一条TCP连接较好)
  7. 发送文件:每当文件发送时都会新建一条TCP连接发送文件

一般流程(Android端无法接收Windows端发送的UDP报文):

  1. 查看PC端程序的托盘Tooltip(提示消息)上的IP和端口号
  2. 用户输入PC端的IP和端口
  3. 本步骤及以下同正常流程

运行实例

主界面

主界面

  • 连接密钥:是从安卓端的主界面获取的(作用是自动连接时验证是不是你的PC,如果手动输入IP和端口号的话可以忽略它
  • 监听端口:指定PC在哪个端口监听(有点多余
  • 开机自启:顾名思义
  • 启动时隐藏此界面:不显示此界面,不过还有托盘(双击托盘恢复
  • 文件保存路径:可以自定义保存文件的目录

PC端托盘菜单

托盘菜单

  • 发送文本:点击会自动发送剪贴板里的内容,Android端的剪切板上就会被设置上相同的内容
  • 发送文件:点击后选择文件发送
  • 关闭连接:当你发现PC端说连上了,Android端提示没连上就点一哈
  • 重启服务:软件不好使的时候试试哦,有奇效(依据的是鸵鸟算法
  • 显示主界面:显示的是设置界面
  • 退出:非常放心的退出了

PC端托盘菜单的ToolTip

在这里插入图片描述
当你有多个网卡是有效的时,会显示多行IP:*** 端口:***


PC端更改文件储存位置

PC端更改文件储存位置


PC端打开文件储存文件夹

PC端打开文件储存文件夹


Android端未连接/正在连接界面

在这里插入图片描述

点击蓝色的小飞机会改变并提示当前状态


Android端已连接界面

在这里插入图片描述

此时点击关闭按钮会关闭连接


Android端接收到的文件

在这里插入图片描述


Android端处理接收到的文件

在这里插入图片描述


安卓端发送文件到PC端(选择其他应用打开/分享 → 选择Share On Lan)

在这里插入图片描述

在Android端选择文件然后用其他方式打开选择Share On Lan应用就可以发送了

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值