代码编织梦想

        事实上,物联网的思路很简单,客户端设备通过TCP协议上传到某个云服务器的端口,我们需要在这个云服务器上编写一个小小的脚本去创建某个端口,持续监听,可以互相发送数据,这个脚本语言可以是JAVA,也可以是Python,或者其他语言。我之前的博客就使用了JAVA脚本的方式,这篇文章谈谈Python。

        学习一门语言,就是在该语言的环境下,我们通过撰写该语言的逻辑系统,实现某种我们想要的功能。因此,如果我们要写python脚本,首先要做的就是搭建python环境,不同系统搭建的方法不同,因为我用的是云服务器搭建物联网系统,因此我的系统是Linux:

        搭建好环境以后,使用vim 直接建立一个 .py的文件,在文件上编辑上我们想要的代码,就可以直接运行:

python xx.py

        不需要像java那样先来个javac编译一下。当然,编译有编译的好处,可以提前发现问题,提前解决问题。

TCP双向持续监听代码:

#!/usr/bin/python3
# 文件名:server.py

# 导入 socket、sys 模块
import socket
import sys


from socket import *
from threading import Thread
 
 
def recv_data():
    while True:
        recv_data = client_socket.recv(1024)  # 最大接收1024字节
        recv_content = recv_data.decode("utf-8")
        print(f"客户端说:{recv_content},来自:{client_info}")
        if recv_content == "end":
            print("结束通信!")
            break
 
def send_data():
    while True:
        msg = input(">")
        client_socket.send(msg.encode("utf-8"))
        if msg == "end":
            print("结束通信!")
            break
 
while True:
    server_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
    host = gethostname()
    server_socket.bind((host, 8888))  # 本机监听8888端口
    server_socket.listen(5)
    print("等待接收连接!")
    client_socket, client_info = server_socket.accept()
    print("客户端建立连接成功!")
 
    t1 = Thread(target=recv_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()
 
    t1.join()
    t2.join()
 
    client_socket.close()

代码的逻辑是:

一、调用底层指令,编写发送和接收数据的函数

二、建立套接字,监听端口

三、循环运行端口监听、发送和接收函数。

        运行以上的代码,然后我们本地电脑安装一个TCP调试助手,连接到该服务器和端口,就是互相发送数据。

        不过如果你足够细心,应该会发现上面的代码还不够好,先看看修改后的:

server_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
host = gethostname()
server_socket.bind((host, 8888))  # 本机监听8899端口
server_socket.listen(5)
print("等待接收连接!")
client_socket, client_info = server_socket.accept()
print("客户端建立连接成功!")

while True:

    t1 = Thread(target=recv_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()

    t1.join()
    t2.join()

    client_socket.close()

        这块代码不同之处是将while循环的语句缩小了,原本的代码逻辑是一直循环建立套接字,改了以后的逻辑是,建立套接字我们只做一次就可以,剩下的处理发送和接受函数就可以,这样会看起来很简洁,而且从资源占用情况来说,按理是后面代码占用的资源会少一些。


对于物联网设计来说,一般需要将我们上传的数据放到数据库,或者网站显示,或者手机app调用。这里我们结合我之前写过的文章,采用将数据写入txt文件的形式,然后后面可以通过邮件定时发送出来,以附件的形式。

那我们就需要在接受函数上做文章,使用python的文件写入函数,先打开指定的文件,将数据流写入,对于格式而言,代码上使用分行显示,因此每接收到一串字符,后面加入换行,如下代码:

def recv_data():
    while True:
        recv_data = client_socket.recv(1024)  # 最大接收1024字节
        recv_content = recv_data.decode("utf-8")
        print(f"客户端说:{recv_content},来自:{client_info}")
        f = open("/root/data/hzy/hzylog.txt","a")
        value=(recv_content)
        s=str(value)
        f.write(s)
        f.write("\n")
        f.close()
        if recv_content == "end":
            print("结束通信!")
            break

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42107954/article/details/127169440

大星星学物联网概览篇-开发板_asmcvc的博客-爱代码爱编程

7 开发板 选择板子的时候考虑:处理器速度、RAM、连网、USB、功耗、与传感器和其他电路的接口、物理尺寸和外形(芯片尺寸和装配的复杂性)。 如果项目不涉及非常复杂的处理工作,例如只是需要有联网能力和很基本的感测能力,则

python初中级开发面经(持续更新2020-3-7)-爱代码爱编程

前言:欢迎各位留言补充遗漏的知识点,本文适用于初中级开发求职~ 文章目录 0. 开发者(程序猿)tip(杂)1.游戏后端架构设计1.1 设计方案1.2 web服务架构1.3 运维监控2 面试控场2.1 技术面2.1.1 专业能力2.1.2 综合素质2.2 leader面2.3 HR面2.4 自我介绍2.5 职业规划2.6 离职原因(丧命题)2.7 公

香橙派mqtt阿里云终端(二) --python3.5环境配置以及阿里云环境测试-爱代码爱编程

书接上回,我搭好了树莓派所需的环境以及往我的个人服务网站上添加了我的树莓派终端,过程当中也是踩了不少坑,不过总算是过来了。接下来切入正题。 目录 python环境以及包配置基础包安装阿里云服务器配置阿里云物联网简介三元组HmacSHA1签名账户设置测试代码paho部分函数定义以及使用测试源码服务器用户密码解析数据发布订阅源码服务配置与在线测试写在最后

《物联网IoT解决方案》(Unity+SteamVR+云技术+5G+AI+物联网+IoT+人机交互+万物互联+物物互联+射频识别+全球定位系统+实时采集+智能化感知+识别+管理+立钻哥哥+==)-爱代码爱编程

《物联网IoT解决方案》 版本 作者 参与者 完成日期 备注 YanlzVR_IoT_V01_1.0 严立钻   2020.05.05               ##《物联网IoT解决方案》发布说明: ++++“物联网IoT解决方案”:是对“IoT”的基础探索;【VR云游戏】:Unity+SteamVR+云技术+5

基于树莓派的远程实时监控(内网穿透)-爱代码爱编程

/*本文系湛江市第十七中学星火创客团队及岭南师范学院物联网俱乐部原创部分参赛项目,转载请保留声明 */ 一、项目背景与目标: 此项目基于一个师弟的留言:如何实现在学校的校园网(办公网)内实现内网穿透。我在已经解决师弟所提出的难题以后,将这个技术知识点应用起来,用树莓派搭建一个简易的监控平台。 当前我们在市面上购买网络监控设备,往往会配备相关的App、We

500人访问的网站服务器配置,500人并发量的服务器配置-爱代码爱编程

500人并发量的服务器配置 内容精选 换一换 当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况,则可能是云服务器的带宽和CPU利用率过高导致。如果您已经通过云监控服务创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。Windows云服务器带宽流量过高或CPU利用率高,您可以按如下步骤进行排查:问题定位:定位影响云服

如何通过网站域名查询服务器地址,如何根据域名查看服务器地址-爱代码爱编程

如何根据域名查看服务器地址 内容精选 换一换 园区智能体的算法服务支持的输出类型为Webhook。在创建作业前您需确保Webhook Service已运行成功。下面以一个简单的python脚本作为示例,展示如何启动Webhook Service并保存接收的数据。准备一台本地的Linux服务器,确保Linux服务器和边缘节点服务器网络通畅,并已安

mc储存服务器地址的文件,如何创建mc服务器地址-爱代码爱编程

如何创建mc服务器地址 内容精选 换一换 外部镜像文件在从原平台导出前,没有按照“Linux操作系统的镜像文件限制”的要求完成初始化操作,推荐您使用弹性云服务器完成相关配置。流程如图1所示。云服务器的正常运行依赖于XEN和KVM驱动,未安装会对云服务器运行时的性能产生影响,云服务器的部分功能会有缺失。请确保外部镜像文件在从原平台导出前,已安装这

Linux远程服务器环境搭建-爱代码爱编程

Linux远程服务器环境搭建 ​ 前段时间搭建博客的时候为远程服务器配置了许多环境,由于其中踩了一些坑,故想记录下来。今日心情不错,特此一录。 ​ Docker是用于搭建环境的不二选择,本文采用传统的方式进行环境搭建,以后可能会出一个Docker的版本。 Linux远程服务器环境搭建如何选购云服务器?一些很重要的Linux命令:查询某个服务占用的端口

HasS Python 温湿度检测系统及小程序实现 (一) 温湿度检测及数据上云-爱代码爱编程

前言 偶然的机会接触到阿里云的HaaS Python物联网开发框架,几天的使用下来发现使用起来开发速度非常快,数据采集,上云,应用开发一气呵成。即使对硬件不熟悉的程序员也可以快速地完成物联网全流程的开发,通过复现我之前做的小项目 基于MQTT应用层协议的物联网家庭温湿度监测系统 并记录全过程,作为学习HaaS的学习笔记。 本系列文章主要实现三个任务

阿里云学习-爱代码爱编程

仅作自己学习使用 一、云计算的概念及相关特点:1、概念2、特点二、Iass、Sass、Pass的概念与区别1、Iass2、Sass3、Pass三、主流的常用的云有哪些1、阿里云2、腾讯云3、小鸟云4、华为云5、百度云6、盛大云7、微软云8、新浪云9、新睿云四、阿里云的产品组成1、云弹性服务2、云数据库3、云大数据五、阿里dataworks1、da

搭建阿里云Linux版服务器+使用docker安装EMQ、Node-RED、MySQL+本地Navicat访问数据库(增删改查)——详细流程-爱代码爱编程

搭建阿里云Linux版服务器+使用docker安装EMQ、Node-RED、MySQL+本地Navicat访问数据库 云服务器基础搭建注册云服务器XShell简介部署EMQ部署docker物联网平台Node-REDMQTT.fx的安装和使用安装MySQL数据库Navicat for MySQL —— 在线数据库管理工具 云服务器基础搭建 Ub

物联网安全与实战_csdn云原生的博客-爱代码爱编程

作者 | 李知周 责编 | 薄荷茶 微信公众号ID | csdn_iot 2016年10月,美国互联网服务商Dynamic Network Service遭遇了大规模DDoS攻击,造成多家美国网站出现登录问题。有数据表明,黑客发起此次攻击,是运用了全球上千万件感染恶意代码的物联网智能设备,例如CCTV闭路监控装置、数码摄影设备等。 堪称灾

物联网应用网站——设计报告_物联网软件设计报告-爱代码爱编程

文章目录 项目实战——设计报告1. 引言1.1 编写目的1.2 项目背景1.3 相关定义1.4 参考文献 2. 总体设计2.1 运行环境2.1.1 软件层面2.1.1.1 服务器端层面2.1.1.2 客户

华为云原生之数据仓库服务gaussdb(dws)的深度使用与应用实践-爱代码爱编程

一、GaussDB(DWS)简介 ① 什么是 GaussDB(DWS)? 数据仓库服务 GaussDB(DWS) 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。