轻松打造:用Python实现手机与电脑间的简易消息系统

展示🎥

观看视频:👀,这是之前完成的一个项目,但今天我们的重点不是这个哦。

告别往昔,启航新篇章

现象🌟

  • 智能互动:📱 我们每天都在享受与智能设备的互动,比如通过手机控制家中的LED灯变换色彩。💡

思考🤔

  • 简化问题:让我们不要一开始就陷入复杂的技术细节,而是先思考最基本的操作——如何通过手机让灯熄灭。

基本概念📚

  • 指令发送:📲 当你轻触手机屏幕时,实际上是在发送一个熄灯指令。
  • 指令传播:🌐 这个指令通过无线网络,比如Wi-Fi,传播到LED灯。

通信模型📡

  • 客户端与服务端
    • 客户端:📱 你的手机,作为发送指令的设备。
    • 服务端:💡 LED灯或控制它的单片机,作为接收并执行指令的设备。

通信过程🔄

  1. 用户操作:👆 你在手机上轻触熄灯按钮。
  2. 指令发送:📤 手机通过网络发送熄灯指令。
  3. 指令接收:📥 LED灯或单片机接收到熄灯指令。
  4. 执行动作:🔕 LED灯熄灭,执行了你的指令。

技术要点🛠️

  • 网络协议:🔗 客户端和服务端之间通信使用的规则,比如HTTP或MQTT。
  • 安全性:🛡️ 保护你的指令在传输过程中不被未授权访问。

用所学知识简单实现 🚀

回顾知识

我们已经学习了网络通信的基础知识,包括TCP/IP协议以及客户端-服务器架构。现在,我们将利用Python来实现一个简单的TCP服务器。

创建TCP服务器 🖥️

首先,我们需要创建一个TCP服务器,它将监听特定的端口,等待客户端的连接,并接收客户端发送的数据。

import socketdef create_server(host, port):# 创建socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定地址和端口server_socket.bind((host, port))# 开始监听server_socket.listen(5)print(f"服务器启动,监听在 {host}:{port}...")while True:# 接受一个新连接client_socket, addr = server_socket.accept()print(f"连接地址: {addr}")# 接收数据data = client_socket.recv(1024)if not data:breakprint(f"收到消息: {data.decode('utf-8')}")# 发送数据client_socket.send('消息已收到'.encode('utf-8'))# 关闭连接client_socket.close()server_socket.close()# 服务器的IP地址和端口号
host = '127.0.0.1'
port = 12345# 启动服务器
create_server(host, port)

服务器工作原理 📖

  1. 创建Socket:服务器首先创建一个socket对象,这是网络通信的起点。
  2. 绑定地址和端口:服务器将其socket绑定到一个IP地址和端口号上,这样客户端就能通过这个地址和端口找到服务器。
  3. 监听:服务器开始监听指定的端口,等待客户端的连接请求。
  4. 接受连接:当客户端尝试连接时,服务器接受这个连接,建立一个与客户端的通信通道。
  5. 接收和发送数据:服务器接收客户端发送的数据,处理后可以发送响应给客户端。
  6. 关闭连接:数据传输完成后,服务器关闭与客户端的连接。

测试服务器 📡

为了测试我们的服务器,我们需要创建一个简单的TCP客户端,它将连接到服务器并发送一些数据。

import socketdef create_client(server_host, server_port):# 创建socket对象client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 连接到服务器client_socket.connect((server_host, server_port))# 发送数据message = '你好,服务器!'client_socket.send(message.encode('utf-8'))# 接收响应data = client_socket.recv(1024)print(f"服务器响应: {data.decode('utf-8')}")# 关闭连接client_socket.close()# 客户端连接的服务器地址和端口
server_host = '127.0.0.1'
server_port = 12345# 启动客户端
create_client(server_host, server_port)

客户端工作原理 📚

  1. 创建Socket:客户端创建一个socket对象。
  2. 连接到服务器:客户端使用服务器的IP地址和端口号连接到服务器。
  3. 发送数据:客户端向服务器发送一条消息。
  4. 接收响应:客户端等待并接收服务器的响应。
  5. 关闭连接:通信完成后,客户端关闭与服务器的连接。

测试结果 📊

在这里插入图片描述

修改服务器的代码 🛠️

import socketdef create_server(host, port):# 创建socket对象server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 绑定地址和端口server_socket.bind((host, port))# 开始监听server_socket.listen(5)print(f"服务器启动,监听在 {host}:{port}...")while True:# 接受一个新连接client_socket, addr = server_socket.accept()print(f"连接地址: {addr}")# 接收数据data = client_socket.recv(1024)if not data:breakprint(f"收到消息: {data.decode('utf-8')}")# 根据接收到的数据控制灯的状态if data.decode('utf-8') == 'off':client_socket.send('The lights have been turned off'.encode('utf-8'))elif data.decode('utf-8') == 'on':client_socket.send('The lights are on'.encode('utf-8'))else:print("未知指令")client_socket.send('Unknown directives'.encode('utf-8'))# 关闭连接client_socket.close()server_socket.close()# 服务器的IP地址和端口号
host = '127.0.0.1'
port = 12345# 启动服务器
create_server(host, port)
实现功能 🎯
  • 手机发送 off 服务端发送 The lights have been turned off
  • 手机发送 on 服务端发送 The lights are on
注意事项 ⚠️
  • 确保手机和电脑位于同一局域网内。
  • 服务端的IP地址应为IPv4地址,不应使用回环地址(如127.0.0.1),除非手机和电脑在同一设备上。
  • 客户端一般应用是发送的都是很简短的字符

如何查看电脑的IPv4地址 🖥️

  1. 打开命令提示符
    • 按下 Win + R 键,打开“运行”对话框。
    • 输入 cmd 并按 Enter 键,这将打开命令提示符(CMD)终端。
      在这里插入图片描述
  2. 查看IP地址
    • 在命令提示符窗口中,输入 ipconfig 命令。
    • Enter 键执行命令。
      在这里插入图片描述

启动电脑服务端

在这里插入图片描述
注意: 记好此时的ip和port

手机链接电脑服务端

选择 tcp客户端

在这里插入图片描述

点击新增客户端

在这里插入图片描述

配置链接信息

在这里插入图片描述

链接成功

在这里插入图片描述

发送信息

在这里插入图片描述

服务端

在这里插入图片描述

完结

网络领域提供了极其丰富的探索和创造机会。无论是在软件开发、硬件交互还是网络安全等方面,都有许多有趣的项目和实验可以进行。

👇 源码资料获取 · 技术与交流 👇

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145653.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

哪个快?用300万个图斑测试ArcGIS Pro的成对叠加与经典叠加

​​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 在使用ArcGIS Pro的过程中,很多朋友发现,Pro有个成对叠加工具集。很多…

图片转pdf在线怎么转?分享5种简单好用的转换方法

在日常工作和学习中,我们经常会遇到需要将图片转换为PDF格式的情况。无论是为了保存文档方便查阅,还是为了提升文件的专业性和安全性,掌握图片转PDF的技巧都显得尤为重要。下面给大家分享5种转换方法,简单高效,一起来了…

b2b2c商城系统好用么 多用户商城系统四大盈利模式

商淘云B2B2C商城系统能帮助企业快速搭建企业自己的多用户商城系统,它提供了多种功能,如多商家管理、订单处理、支付模块集成等,适合各种规模的企业。用户界面友好,且支持定制化,能满足不同业务需求。 多用户商城有四大…

HTTP协议详解以及常见的状态码

HTTP协议的定义: HTTP(HyperText Transfer Protocol,超文本传输协议)是一种建立在TCP(传输控制协议)之上的无状态连接协议。它是互联网的基础协议之一,用于客户端与服务器之间的通信。HTTP规定…

【C++二叉树】105.从前序与中序遍历序列构造二叉树

105. 从前序与中序遍历序列构造二叉树 - 力扣(LeetCode) 根据前序遍历和中序遍历构建二叉树 前序遍历访问方式:根-左子树-右子树 中序遍历访问方式:左子树-根-右子树 思路分析: 前序中序可以构建一颗二叉树&#xf…

微信视频号的视频怎么下载提取?详细操作流程来了!

微信视频号是腾讯为用户提供的娱乐学习的短视频平台,用户可通过视频号中的内容进行查看浏览,但不少人因视频号本身不具备创作灵感,故此需要下载提取高清视频号的内容。 视频号下载视频 视频下载是用户想通过软件或者插件进行保存微信视频号…

文献阅读(81)FACT

题目:FACT: FFN-Attention Co-optimized Transformer Architecture with Eager Correlation Prediction时间:2023会议:ISCA研究机构:清华 主要贡献 算法优化:提出了Eager Prediction (EP),预测softmax前重…

马踏棋盘c++

马踏棋盘c 题目回溯问题模型特征模型 代码 题目 马踏棋盘算法,即骑士周游问题。将马放在国际象棋的 88 棋盘的某个方格中,马按走棋规则(马走日字)进行移动。每个方格只进入一次,走遍棋盘上全部 64 个方格。 回溯问题模型 特征 解组织成树…

MySQL高阶1867-最大数量高于平均水平的订单

目录 题目 准备数据 分析数据 题目 您正在运行一个电子商务网站,该网站正在寻找不平衡的订单。不平衡订单的订单最大数量严格大于每个订单(包括订单本身)的平均数量。 订单的平均数量计算为(订单中所有产品的总数量&#xff…

数商:数字时代的新认知

在数字时代,“数商” 概念兴起,代表着人们在该时代应具备的新认知与能力。 数商即数字商数,指个体在数字时代认知、理解、运用数字技术和数据的能力,以及进行有效决策、创新和合作的素养。其内涵包括数字认知能力、数据素养、数字…

计算机毕业论文题目之基于Web技术B/S结构的新生管理系统包含报道,寝室宿舍,缴费学费,数据统计分析汇总等功能的源代码下载

为了满足功能需求,我们将设计并实现一个基于Web技术的B/S架构下的新生管理系统。本系统旨在通过前端与后端分离的设计模式,为用户提供简洁、高效的交互体验,并确保数据的安全性和系统的可扩展性。下面将从系统架构、功能模块以及技术选型三个…

【练习13】字符串中找连续最长的数字串

链接:字符串中找出连续最长的数字串_牛客题霸_牛客网 (nowcoder.com) 原理分析:模拟双指针 为什么用到BufferedReader 和 InputStreamReader组合输入字符? 因为BufferedReader 内部维护了一个字符缓冲区,调用readLine()方法时&…

全网最全的软件测试八股文

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行,可以实现跨平台,客户端零维护,维护成本低,但是个…

基于SpringBoot+Vue的剧本杀管理系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于JavaSpringBootVueMySQL的…

TI官方资源介绍和使用

该文章会同步发布在知乎和微信公众号(雷达原理与系统) TI毫米波雷达相关资源介绍 毫米波雷达 硬件 毫米波雷达SOC(1642,1843, 1432,2944) 收发器MMIC:1432,2243 评估(EVM)板 D…

5万字讲解大模型语言高效推理研究(清华综述)

1.1背景介绍 近年来,大语言模型(Large Language Models, LLMs)受到学术界和工业界的广泛关注,得益于其在各种语言生成任务上的出色表现,大语言模型推动了各种人工智能应用(例如ChatGPT、Copilot等&#xf…

蘑菇云闲盒业务新手教程

闲盒业务是什么?​ 闲盒是针对小带宽和低配置设备,提供的流量变现业务,可以将用户家里的闲置设备和宽带提供给我们,我们将按您的流量情况,每天给您一笔收益。 闲盒业务优势:​ 带宽利用率高,收…

鸿蒙手势交互(三:组合手势)

三、组合手势 由多种单一手势组合而成,通过在GestureGroup中使用不同的GestureMode来声明该组合手势的类型,支持顺序识别、并行识别和互斥识别三种类型。 GestureGroup(mode:GestureMode, gesture:GestureType[]) //- mode:为GestureMode枚…

TCP报文格式

RFC9293协议规范,规定的TCP格式如图1, 对比RFC793规定的格式,控制位从6bit变成了8bit 图1,图片来源:datatracker.ietf.org 图2为,可对照的中文版TCP格式,中文版参照的是RFC793 图2 重点…

大腾智能3D协同平台通过华为云云软件认证

在数字化浪潮的推动下,工业软件不仅是研发和生产的核心工具,更是创新突破的基础,正成为推动工业领域数字化转型的关键力量。 近日,深圳市大腾信息技术有限公司凭借在技术创新与产品优化方面的卓越表现,再次迎来里程碑…