如何注册网站平台重庆网站建设重庆零臻科技行

web/2025/10/8 11:09:16/文章来源:
如何注册网站平台,重庆网站建设重庆零臻科技行,网站怎么建设可以发图评论,2网站免费建站简介 在网络通信编程中#xff0c;用的最多的就是UDP和TCP通信了#xff0c;原理这里就不分析了#xff0c;网上介绍也很多#xff0c;这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好#xff0c;快速视网络情况#xff0c;存在丢包 与嵌入…简介 在网络通信编程中用的最多的就是UDP和TCP通信了原理这里就不分析了网上介绍也很多这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好快速视网络情况存在丢包 与嵌入式设备通信实时控制 场景 TCP丢包会自动重发理论上不用担心丢包问题延时相对大一些 通信可靠性场景比如IoT设备 控制状态同步 一、socket 我们要进行网络通信那么就要用到socketsocket即网络套接字应用程序可以通过它发送或接收数据可对其进行像对文件一样的打开、读写和关闭等操作。 在 Python 中使用socket 模块的函数 socket 就可以创建一个socket对象socket()函数的参数分别有family, type, proto。 1.其中family参数是指协议域又称为协议族family常用的协议族有AF_INET、AF_INET6、...等等AF_INET指ipv4AF_INET6即为ipv6 2.然后是typetype指定socket类型有SOCK_STREAM流式套接字主要用于 TCP 协议和SOCK_DGRAM数据报套接字主要用于 UDP 协议等等 3.proto就是指定的协议常用的协议有IPPROTO_TCP、IPPTOTO_UDP、IPPROTO_SCTP、IPPROTO_TIPC等它们分别对应TCP传输协议、UDP传输协议、STCP传输协议、TIPC传输协议但是type和proto不可以随意组合当proto参数为0或者不填时会自动选择type类型对应的默认协议。 二、UDP发送数据 首先我们要导入socket包 import socket 创建一个udp套接字ipv4协议使用SOCK_DGRAM参数不填proto就会默认自动选择udp协议 # 1、创建一个UDP套接字 udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 然后我们把要接收数据的那一端的ip地址和端口号放在一个元组里准备好 ​​​​# 2. 准备接收方的地址和端口127.0.0.1:12341表示目的ip地址12341表示目的端口号 dest_addr (127.0.0.1, 12341)  # 注意这是一个元组其中ip地址是字符串端口号是数字​ 准备好后就可以使用sendto函数进行发送了要注意需要对字符串进行编码才可以发送 # 3. 发送数据到指定的ip和端口 udp_socket.sendto(Hello,I am a UDP socket..encode(utf-8), dest_addr) 发送完就可以关闭套接字了 # 4. 关闭套接字 udp_socket.close() 例程一UDP server端UDP数据接收 #!/usr/bin/python3 # -*- coding: utf-8 -*- udp通信例程udp server端修改udp_addr元组里面的ip地址即可实现与目标机器的通信 此处以单机通信示例ip为127.0.0.1实际多机通信此处应设置为目标客户端ip地址 from time import sleep import socketdef main():# udp 通信地址IP端口号udp_addr (127.0.0.1, 9999)udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定端口udp_socket.bind(udp_addr)# 等待接收对方发送的数据while True:recv_data udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数# 打印接收到的数据print([From %s:%d]:%s % (recv_data[1][0], recv_data[1][1], recv_data[0].decode(utf-8)))if __name__ __main__:print(当前版本 , __version__)print(udp server )main() 代码解析  1.socket函数中第二个参数就是通信类型此处SOCK_DGRAM 就是指定使用UDP通信 2.服务端需要使用bind函数绑定端口客户端不需要因为客户端发送的时候已经带了端口参数 例程二UDP client端UDP数据发送 #!/usr/bin/python3 # -*- coding: utf-8 -*- udp通信例程udp client端修改udp_addr元组里面的ip地址即可实现与目标机器的通信 此处以单机通信示例ip为127.0.0.1实际多机通信此处应设置为目标服务端ip地址 from time import sleep import socketdef main():# udp 通信地址IP端口号udp_addr (127.0.0.1, 9999)udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 发送数据到指定的ip和端口,每隔1s发送一次发送10次for i in range(10):udp_socket.sendto((Hello,I am a UDP socket for: str(i)) .encode(utf-8), udp_addr)print(send %d message % i)sleep(1)# 5. 关闭套接字udp_socket.close()if __name__ __main__:print(当前版本 , __version__)print(udp client )main() 例程三多线程实现UDP数据收发 #!/usr/bin/python3 # -*- coding: utf-8 -*- python多线程通信 from time import sleep import socket import threading# 定义全局变量 t1_count 0 t2_count 0def udp_received_hundle(s):global t1_countprint(this is thread 1 running)while True:t1_count 1print(thread 1 第 %s 次运行 % t1_count)recv_data s.recvfrom(1024)  # 1024表示本次接收的最大字节数# 打印接收到的数据print([From %s:%d]:%s % (recv_data[1][0], recv_data[1][1], recv_data[0].decode(utf-8)))def udp_send_hundle(s):global t2_countprint(this is thread 2 running)while True:t2_count 1print()print(thread 2 第 %s 次运行 % t2_count)s.sendto((Hello,I am a UDP socket for: str(t2_count)).encode(utf-8), udp_addr)print(send %d message % t2_count)print()sleep(1)if __name__ __main__:print(当前版本 , __version__)# 初始化# udp 通信地址IP端口号udp_addr (127.0.0.1, 9999)udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定端口:udp_socket.bind(udp_addr)# 定义线程thread_list []t1 threading.Thread(targetudp_received_hundle, args(udp_socket, ))thread_list.append(t1)t2 threading.Thread(targetudp_send_hundle, args(udp_socket, ))thread_list.append(t2)for t in thread_list:t.setDaemon(True)t.start()for t in thread_list:t.join()print(exit all task.)print(all process end.) 代码解析 这里用到了多线程虽然python中的多线程是假的多线程实际上是一个线程分时复用这里我们不深究如果平常用到也就几个小任务跑一跑抄我这个作业就ok。 多线程实际上是从t.join()后才开始正式运行的这里一定要注意不能漏了这个函数。 udp的收发与上面的例程几乎是一样的。 代码运行效果如下 当前版本  1.0.0 this is thread 1 running thread 1 第 1 次运行 this is thread 2 runningthread 2 第 1 次运行 send 1 message[From 127.0.0.1:9999]:Hello,I am a UDP socket for: 1 thread 1 第 2 次运行thread 2 第 2 次运行 send 2 message[From 127.0.0.1:9999]:Hello,I am a UDP socket for: 2 thread 1 第 3 次运行thread 2 第 3 次运行 send 3 message[From 127.0.0.1:9999]:Hello,I am a UDP socket for: 3 thread 1 第 4 次运行thread 2 第 4 次运行 send 4 message[From 127.0.0.1:9999]:Hello,I am a UDP socket for: 4 thread 1 第 5 次运行thread 2 第 5 次运行 send 5 message 使用网络调试助手测试程序注意如果不是在本机windows系统上运行python程序在Ubuntu虚拟机或者其他局域网内的机器上运行要把windows的防火墙关了 然后我们让其每隔一秒发送一次发送10次发送成功 完整代码 ​#!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Williamimport socket,timedef main():# 1、创建一个UDP套接字udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 准备接收方的地址和端口192.168.0.107表示目的ip地址8080表示目的端口号dest_addr (192.168.8.226, 12341)  # 注意这是一个元组其中ip地址是字符串端口号是数字# 3. 发送数据到指定的ip和端口for i in range(10):udp_socket.sendto(Hello,I am a UDP socket..encode(utf-8), dest_addr)time.sleep(1)# 4. 关闭套接字udp_socket.close()if __name__ __main__:main()​ 三、UDP接收数据 在之前发送数据的时候我们可以看到其端口号是一直在变得那么我们要接收数据就需要知道其端口号是什么所以我们要先固定一个端口号使用bind函数 # 2. 绑定本地的相关信息如果不绑定则系统会随机分配一个端口号 local_addr (, 12344)  # ip地址和端口号ip一般不用写表示本机的任何一个ip udp_socket.bind(local_addr) 接收数据使用recvfrom函数其参数为接收的最大数据长度 # 3. 等待接收对方发送的数据 recv_data udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数 接收完后将其打印出来 # 4、打印接收到的数据 print(recv_data) 运行通过网络调试助手发送数据 可以看到打印出来的信息是一个元组第一项接收到的字符串第二项也是一个元组包含对方的IP地址和端口号 完整代码 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Williamimport socket,timedef main():# 1、创建一个UDP套接字udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定本地的相关信息如果不绑定则系统会随机分配一个端口号local_addr (, 12344)  # ip地址和端口号ip一般不用写表示本机的任何一个ipudp_socket.bind(local_addr)# 3. 等待接收对方发送的数据recv_data udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数# 4、打印接收到的数据print(recv_data)# 5. 关闭套接字udp_socket.close()if __name__ __main__:main() 四、UDP收发数据 实现这样一个功能通过UDP发送10次消息然后等待接收将接收的数据及其来源打印出来 完成代码 ​ #!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Williamimport socket,timedef main():# 1、创建一个UDP套接字udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 绑定本地的相关信息如果不绑定则系统会随机分配一个端口号udp_socket.bind((, 12344))# 3. 发送数据到指定的ip和端口,每隔1s发送一次发送10次for i in range(10):udp_socket.sendto(Hello,I am a UDP socket..encode(utf-8), (192.168.8.226, 12341))time.sleep(1)# 4. 等待接收对方发送的数据while(True):recv_data udp_socket.recvfrom(1024)# 打印接收到的数据print([From %s:%d]:%s%(recv_data[1][0],recv_data[1][1],recv_data[0].decode(utf-8)))# 5. 关闭套接字udp_socket.close()if __name__ __main__:main()​ 五、同时收发数据 现在实现这样一个功能即运行程序然后在控制台输入字符串发送出去同时还可以接收数据我使用多线程来实现这个程序不过要实现方便接收我们在程序的开始将IP地址和端口号打印出来实现效果如下 实现代码 ​ #!/usr/bin/env python # -*- coding:utf-8 -*- # Author: Williamimport socket,time,threadingdef recv_thread(socket):# 等待接收对方发送的数据while(True):try:recv_data socket.recvfrom(1024)# 打印接收到的数据print([From %s:%d]:%s%(recv_data[1][0],recv_data[1][1],recv_data[0].decode(utf-8)))except Exception:breakdef main():# 1、创建一个UDP套接字udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2、绑定本地的相关信息如果不绑定则系统会随机分配一个端口号udp_socket.bind((, 12344))# 3、打印本机ip地址和端口号print(local ipaddr and port-,socket.gethostbyname(socket.gethostname()):12344)# 4、创建一个线程用来接收数据t threading.Thread(targetrecv_thread, args(udp_socket,))t.start()# 5、等待输入数据,然后发送出去直到输入的数据为quitwhile(True):print(please input a string.input quit to quit.)send_data input()if send_data quit:breakelse:udp_socket.sendto(send_data.encode(utf-8), (192.168.8.226,12341))# 6、关闭套接字udp_socket.close()def main1():# 1、创建一个UDP套接字udp_socket socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2. 准备接收方的地址和端口192.168.0.107表示目的ip地址8080表示目的端口号dest_addr (192.168.8.226, 12341)  # 注意这是一个元组其中ip地址是字符串端口号是数字# 3. 发送数据到指定的ip和端口for i in range(1):udp_socket.sendto(Hello,I am a UDP socket..encode(utf-8), dest_addr)time.sleep(1)# 4. 等待接收对方发送的数据recv_data udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数# 5、打印接收到的数据print(recv_data)# 4. 关闭套接字udp_socket.close()if __name__ __main__:main()​ 结语 这里只是UDP的简单使用给大家一个示例参考在实际应用过程中涉及到复杂数据通信还需要使用通信协议协议收发解包等函数另外数据缓存也很关键尤其是大数据量的情况下通常会用到队列相关知识这一部分就留给大家自行研究吧如果这篇文章对你有用不妨点赞关注你的支持是我最大的动力。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

上传的网站打不开怎么办如何用网页制作网站

网页中的音视频 <audio> 和 <vedio> 标签属性&#xff1a;autoplay 自动播放 controls 控制播放 loop 循环播放 表单 HTML 表单用于收集用户输入。 标签<form> 标签属性 action 数据的路径 enctype 传输文件 enctype"multipart/form-data" method …

开封网站seo工作中网页开发方案

目录 线程安全和重⼊问题 死锁和活锁 死锁 死锁四个必要条件 活锁 STL,智能指针和线程安全 线程安全的单例模式 饿汉模式 懒汉模式 懒汉模式实现单例模式(线程安全版本) 饿汉模式实现单例模式 我们来学习单例模式与线程安全 线程安全和重⼊问题 线程安全&#xff…

自己电脑上做的网站 怎么让别人看口碑好的五屏网站建设

在硅谷一线大厂所维护的系统服务中&#xff0c;我们经常可以看见SLA这样的承诺。 例如&#xff0c;在谷歌的云计算服务平台Google Cloud Platform中&#xff0c;他们会写着“99.9% Availability”这样的承诺。那什么是“99.9% Availability”呢&#xff1f; 要理解这个承诺是…

西部数码上传网站柳州网站虚拟主机销售价格

介绍 本篇Codelab我们将教会大家如何构建一个简易的OpenHarmony新闻客户端&#xff08;JS版本&#xff09;。应用包含两级页面&#xff0c;分别是主页面和详情页面&#xff0c;两个页面都展示了丰富的UI组件&#xff0c;其中详情页的实现逻辑中还展示了如何通过调用相应接口&a…

广州网站建设电话咨询wordpress最新版本

较为官方的概念&#xff1a; 当且仅当规格说明是存在的并且正确&#xff0c;程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能&#xff0c;判断标准以最终用户为准&#xff1a;当程序没有实现其最终用户合理预期的 功能要求时&#xff0c;就是软…

房地产网站建设策划书北京公司电话大全黄页

低功耗技术 功耗构成静态功耗(漏电功耗)动态功耗翻转功耗(Switch Power)短路功耗(Internal Power) 不同类型的标准单元的功耗 低功耗设计方法降低芯片工作电压多阈值工艺方法电源门控&#xff08;Power Gating&#xff09;多电压域(Multi-Voltage Domain)体偏置门控时钟一个简单…

班级响应式网站html格式游戏开发物语破解版

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

清远市住房与城乡建设局的网站查网站加背景音乐

已知有三个数据库mysql,mongodb和redis&#xff0c;已经分别存储了不同的学生信息&#xff0c;数据全部采用字符串类型&#xff0c;只有id和name两个字段(在mongo和redis中键为id,值为name)&#xff0c;现需编写代码实现需求&#xff1a;根据指定id获取对应的name和存储该条信息…

网站商城建站app是程序员做出来的吗

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

站长工具综合查询ip情人做网站

在上传文件时&#xff0c;想使用setRequestMethod&#xff08;“GET”&#xff09;。结果无效 因为需要使用输出流上传文件&#xff0c;而使用输出流时&#xff0c;HttpURLConnection默认使用post请求。是无法更改的 conn.setDoOutput(true); //允许输出流 与 conn.setR…

计算机网络 网站开发与设计网站推广的方式

背景 闲鱼目前已经是国内最大的闲置物品交易平台&#xff0c;每天都有数以千万计的用户过来闲鱼&#xff0c;以C2C交易为主。在闲鱼里面&#xff0c;用户的C2C购物频率其实是很低的&#xff0c;而纯粹地逛商品feed流是一件挺无聊的事情。在业务上做加法&#xff0c;突破闲鱼用…

jsp网站开发pdf市场营销与网络营销

Linux的 /etc/hosts 文件用于静态地映射主机名到 IP 地址。 通常用于本地网络中的名称解析&#xff0c;它可以覆盖 DNS 的设置。当你访问一个域名时&#xff0c;系统会首先检查 /etc/hosts 文件&#xff0c;如果找到了匹配项&#xff0c;就会使用该 IP 地址&#xff0c;否则会…

进入城乡建设网站怎么竣工备案网站被攻击

1.Local Binary Pattern( LBP) 算法原理 局部二值模式(Local Binary Pattern, LBP)是一种用于描述图像纹理特征的算法。它通过对图像的每个像素点与其邻域像素进行比较,得到一个二进制编码来表示该像素点的纹理信息。 LBP 算法的基本步骤如下: 选择一个中心像素点,并定…

网站资源做外链邢台网站建设免费做网站排名

SPU(Standard Product Unit) 标准化产品单元 SPU是能够描述一个产品的单元&#xff0c;比如说&#xff0c;iPhone8就是一个SPU&#xff0c;与商家、颜色、款式、套餐无关。 SKU(Stock Keeping Unit) 库存量单元 SKU是用来定价和管理库存的&#xff0c;比如说&#xff0c;iPhon…

吉林省级建设行政主管部门政务网站wordpress设置404

在数字化的时代洪流中&#xff0c;开源与闭源的选择不断成为技术界的重要分水岭。随着特斯拉CEO埃隆马斯克的言论及其决策&#xff0c;公开支持开源&#xff0c;并糅合商业理念与技术革新&#xff0c;使得这场辩论再次成为公众关注的焦点。那么&#xff0c;在这场关乎技术发展脉…

郑州网站关键词优化公司wordpress文章添加标签居中

在本届「开源之夏 2024」活动中&#xff0c;MatrixOne开源社区共计上线3个项目任务&#xff0c;最终有 3位同学成功突围。接下来让我们看看每个项目的详细中选情况&#xff1a; 中选学生公示 项目名称&#xff1a;基于大语言模型的操作系统任务自动识别&#xff0c;拆解&#…

网站建设公司人员工资出国劳务信息网

前言 前面我们讲解了Java的基础语法以及面向对象的思想,相信大家已经基本掌握了Java的基本编程。在之前代码中,我们也看到代码写错了编译器会提示报错,或者编译器没有提示,但是运行的时候报错了,比如前面的数组查询下标超过数组的长度。所以在使用计算机语言进行项目开发的…

希腊网站后缀php网站导航

软件安装 Anaconda 所有语言的包(package)、依赖(dependency)和环境(environment)管理器&#xff0c;类似应用商店 Conda < Miniconda < Anaconda&#xff08;有交互界面&#xff09; Linux下Miniconda即可 安装Miniconda 搜索北外/清华miniconda镜像网站&#xff…

蛋糕网站设计石家庄网站建设专家

FTP 1、FTP—文件传输协议 文件传输协议&#xff08;File Transfer Protocol&#xff0c;FTP&#xff09;是用于在网络上进行文件传输的一套标准协议&#xff0c;它工作在 OSI 模型的第七层&#xff0c; TCP 模型的第四层&#xff0c; 即应用层&#xff0c; 使用 TCP 传输&…

网站描述怎么设置vps搭建wordpress博客

Leetcode 第 374 场双周赛 Problem D 100146. 统计感冒序列的数目&#xff08;组合数学阶乘逆元&#xff09;题目 给你一个整数 n 和一个下标从 0 开始的整数数组 sick &#xff0c;数组按 升序 排序。有 n 位小朋友站成一排&#xff0c;按顺序编号为 0 到 n - 1 。数组 sick 包…