wordpress收藏/seo网站推广方案

wordpress收藏,seo网站推广方案,做网站ps能用美图秀秀么,贵州软件制作文章目录 编写非阻塞的TCP连接程序编写UDP的socket程序创建连接发送数据 多线程管理udp 编写非阻塞的TCP连接程序 下面代码使用了select模块来管理多个 socket 连接,server_socket.setblocking(0)将服务器 socket 设置为非阻塞模式 ,在接收数据时&#…

文章目录

  • 编写非阻塞的TCP连接程序
  • 编写UDP的socket程序
    • 创建连接
    • 发送数据
  • 多线程管理udp

编写非阻塞的TCP连接程序

下面代码使用了select模块来管理多个 socket 连接,server_socket.setblocking(0)将服务器 socket 设置为非阻塞模式 ,在接收数据时,若没有数据可读,会捕获EAGAIN或EWOULDBLOCK错误并继续循环。

import socket
import selectdef non_blocking_tcp_server():server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)server_address = ('localhost', 10000)server_socket.bind(server_address)server_socket.listen(1)# 设置为非阻塞模式server_socket.setblocking(0)inputs = [server_socket]print("Server is listening on {}:{}".format(*server_address))while inputs:readable, writable, exceptional = select.select(inputs, [], inputs)for s in readable:if s is server_socket:connection, client_address = s.accept()print(f"New connection from {client_address}")connection.setblocking(0)inputs.append(connection)else:try:data = s.recv(1024)if data:print(f"Received from {s.getpeername()}: {data.decode()}")s.sendall(b"Hello, client!")else:print(f"Closing connection from {s.getpeername()}")inputs.remove(s)s.close()except socket.error as e:if e.errno in (socket.errno.EAGAIN, socket.errno.EWOULDBLOCK):continueelse:print(f"Error: {e}")inputs.remove(s)s.close()for s in exceptional:print(f"Handling exceptional condition for {s.getpeername()}")inputs.remove(s)s.close()if __name__ == "__main__":non_blocking_tcp_server()

编写UDP的socket程序

UDP 是无连接的传输协议,相比 TCP 更简单。我将重新编写代码,展示如何使用 Python 实现 UDP 发送和接收报文,重点在于socket模块中 UDP 相关的函数调用。

import socketdef udp_send_receive():# 创建UDP socketudp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定地址和端口server_address = ('localhost', 10001)udp_socket.bind(server_address)# 发送数据message = "Hello, UDP!"target_address = ('localhost', 10002)udp_socket.sendto(message.encode(), target_address)while True:try:# 接收数据data, client_address = udp_socket.recvfrom(1024)print(f"Received from {client_address}: {data.decode()}")except socket.error as e:print(f"Error: {e}")if __name__ == "__main__":udp_send_receive()

上述代码中,先创建 UDP socket 并绑定地址端口,然后向目标地址发送数据,接着进入循环持续接收数据。

这里说明一下UDP的调试,类型选择udp,端口是刚才代码中绑定的端口。

创建连接

在这里插入图片描述
在这里插入图片描述

发送数据

点创建,然后发送随便的内容
在这里插入图片描述
显示收到了数据
在这里插入图片描述

多线程管理udp

下面这个例子,是把收发放在不同的线程中进行运行。提高程序的并发性,我将引入threading模块来创建线程。

import socket
import threadingdef udp_send(udp_socket, target_address):message = "Hello, UDP!"while True:try:udp_socket.sendto(message.encode(), target_address)# 为了避免发送过于频繁,这里添加一个小的时间间隔,单位为秒import timetime.sleep(1)except socket.error as e:print(f"Send Error: {e}")def udp_receive(udp_socket):while True:try:data, client_address = udp_socket.recvfrom(1024)print(f"Received from {client_address}: {data.decode()}")except socket.error as e:print(f"Receive Error: {e}")def main():# 创建UDP socketudp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 绑定地址和端口server_address = ('localhost', 10001)udp_socket.bind(server_address)target_address = ('localhost', 10002)send_thread = threading.Thread(target=udp_send, args=(udp_socket, target_address))receive_thread = threading.Thread(target=udp_receive, args=(udp_socket,))send_thread.start()receive_thread.start()send_thread.join()receive_thread.join()if __name__ == "__main__":main()

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

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

相关文章

PHP礼品兑换系统小程序

🎁 礼品兑换系统:革新企业礼品管理,专属神器来袭! 💻 一款专为追求高效与个性化的现代企业量身打造的礼品兑换系统,它基于强大的ThinkPHP框架与前沿的Uniapp技术栈深度融合,不仅完美适配礼品卡…

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一:使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式,设置type加载数据类型 设置线条 鼠标移入改变颜色,设置图层属性,此处是fill-extru…

Langchain+讯飞星火大模型Spark Max调用

1、安装langchain #安装langchain环境 pip install langchain0.3.3 openai -i https://mirrors.aliyun.com/pypi/simple #灵积模型服务 pip install dashscope -i https://mirrors.aliyun.com/pypi/simple #安装第三方集成,就是各种大语言模型 pip install langchain-comm…

【kong gateway】5分钟快速上手kong gateway

kong gateway的请求响应示意图 安装 下载对应的docker 镜像 可以直接使用docker pull命令拉取,也可以从以下地址下载:kong gateway 3.9.0.0 docker 镜像 https://download.csdn.net/download/zhangshenglu1/90307400, postgres-13.tar http…

高效查找:二分查找算法解析

1.二分查找简介 二分查找算法(Binary Search)是一种高效的查找算法,适用于有序数组或序列。它的基本思想是通过逐步缩小查找范围,将查找区间一分为二,直到找到目标值或确定目标值不存在。 算法原理:在数组…

数据统计–图形报表(day11)

Apache ECharts 介绍 Apache ECharts 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 官网地址:Apache ECharts 入门案例 Apache Echarts官方…

Docker可视化管理工具Portainer

Portainer简介 Portainer 是一个轻量级的、开源的容器管理工具,提供了一个直观的 Web 用户界面(UI),用于管理 Docker 和 Kubernetes 环境。它简化了容器的部署、监控和管理,特别适合不熟悉命令行操作的用户或团队。 …

C++入门14——set与map的使用

在本专栏的往期文章中,我们已经学习了STL的部分容器,如vector、list、stack、queue等,这些容器统称为序列式容器,因为其底层是线性序列的数据结构,里面存储的是元素本身。而本篇文章我们要来认识一下关联式容器。 &am…

浅析云场景SSD实时迁移技术

在数据中心的运营管理中,负载均衡和系统容错是确保高效稳定运行的关键。SSD实时迁移技术,为解决这些问题提供了创新方案,成为数据中心技术发展的重要驱动力。 以AI训练任务为例,其运行时间长且无需用户频繁交互。数据中心的负载会…

同一局域网远程控制其他电脑以及Windows家庭版开启远程桌面等解决方法

1. 前言 家庭版的 Windows 10 和 Windows 11 默认不支持远程桌面功能。然而,我们可以通过使用 RDPWrap 项目来启用这一功能。 电脑的“设置”-> “远程桌面设置”中查看系统是否支持远程桌面 2.下载安装 RDPWrap 安装该项目使家庭版也支持远程桌面 项目地址&…

DeepSeek-R1:将强化学习用于激励大型语言模型的推理能力

目录 引言 一、DeepSeek-R1的贡献 二、DeepSeek-R1的方法 2.1、DeepSeek-R1-Zero:基础模型上的强化学习 2.2、DeepSeek-R1:冷启动强化学习 2.3、蒸馏:赋予小模型推理能力 三、DeepSeek-R1实验结果 3.1、模型优点 3.2、模型缺点 四、…

数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)

数据库管理287期 20245-01-24 数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)1 AI向量搜索:算术和聚合运算2 更改Compatible至23.6.0,以使用23.6或更高版本中的新AI向量搜索功能3 Cloud Developer包4 DBMS_DEVELOPER.GET…

Android BitmapShader简洁实现马赛克,Kotlin(二)

Android BitmapShader简洁实现马赛克,Kotlin(二) 这一篇 Android BitmapShader简洁实现马赛克,Kotlin(一)-CSDN博客 遗留一个问题,xml定义的MyView为wrap_content的宽高,如果改成其…

智能化加速标准和协议的更新并推动验证IP(VIP)在芯片设计中的更广泛应用

作者:Karthik Gopal, SmartDV Technologies亚洲区总经理 智权半导体科技(厦门)有限公司总经理 随着AI技术向边缘和端侧设备广泛渗透,芯片设计师不仅需要考虑在其设计中引入加速器,也在考虑采用速度更快和带宽更高的总…

【问题】Chrome安装不受支持的扩展 解决方案

此扩展程序已停用,因为它已不再受支持 Chromium 建议您移除它。详细了解受支持的扩展程序 此扩展程序已停用,因为它已不再受支持 详情移除 解决 1. 解压扩展 2.打开manifest.json 3.修改版本 将 manifest_version 改为3及以上 {"manifest_ver…

Vue入门(Vue基本语法、axios、组件、事件分发)

Vue入门 Vue概述 Vue (读音/vju/,类似于view)是一套用于构建用户界面的渐进式框架,发布于2014年2月。与其它大型框架不同的是,Vue被设计为可以自底向上逐层应用。Vue的核心库只关注视图层,不仅易于上手,还便于与第三…

[云讷科技]Kerloud Falcon四旋翼飞车虚拟仿真空间发布

虚拟仿真环境作为一个独立的专有软件包提供给我们的客户,用于帮助用户在实际测试之前验证自身的代码,并通过在仿真引擎中添加新的场景来探索新的飞行驾驶功能。 环境要求 由于环境依赖关系,虚拟仿真只能运行在装有Ubuntu 18.04的Intel-64位…

postgresql15的启动

PostgreSQL是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统,且因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。现在国产数据库大力发展阶段,学习和熟悉postgresql的功能是非常有必要的&#x…

Python NumPy(1):介绍、Ndarray对象、NumPy数据类型

1 介绍 NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含: 一个强大的N…

sql语句--新手入门增删改查保姆级教学

一丶在数据库管理系统中,SQL(Structured Query Language,结构化查询语言)是用于访问和操作数据库的标准编程语言。以下将通过一个假设的“articles”表(代表文章或博客条目)来展示SQL中的增(Ins…