advPython-2

网络编程(基于TCP协议)

基础(1)

文件名: myprofile.py

iaap = ("127.0.0.1", 8002)

文件名: server.py

"""
CS架构(client\server)最基本知识
"""
import socket
from myprofile_1 import iaap# 1.创建socket对象(下面两个参数不写默认也是它俩)
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # socket.SOCK_STREAM 流式协议# 2.绑定地址
server.bind(iaap)# 3.监听连接请求
server.listen(5)  # 5 --> 半连接池大小# 4.取出连接请求,开始服务
conn, addr = server.accept()# 5.数据传输
date = conn.recv(1024)
date = date.decode("utf-8")
print(date)# 6.结束服务
conn.close()# 7.关闭服务器(可选)
server.close()

文件名: client.py

"""
CS架构(client\server)最基本知识
"""
import socket
from myprofile_1 import iaap# 1.创建socket对象
client = socket.socket()# 2.建立连接
client.connect(iaap)# 3.传输数据
msg = input("请输入>>>")
client.send(msg.encode("utf-8"))# 4.关闭连接(客户端的最后必须是关闭连接,从而释放客户端设备的资源)
client.close()  # 所以必须要写,这行代码对应的是服务端的conn.close()

基础(2)

文件名: myprofile.py

iaap = ("127.0.0.1", 8004)

文件名: server.py

"""
CS架构升级--连接循环
"""
import socket
import timefrom myprofile_2 import iaap# 基本步骤
sk = socket.socket()
sk.bind(iaap)
sk.listen(5)  # 半连接池
print("正在等待客户端连接...")# 连接循环
while True:# 获取池中对象conn, addr = sk.accept()print("成功连接客户端")# 信息传输while True:# 客户端非正常断开,windows报错,而mac和Linux不会报错但收到的date为空try:date = conn.recv(1024)except:breakif not date:breakconn.send(date.upper())# 连接断开提醒print("正在关闭连接...")time.sleep(1.1)conn.close()print("连接已关闭")# sk.close()

文件名: client.py

"""
CS架构升级--连接循环
"""
import socket
from myprofile_2 import iaap# 基本步骤
sk = socket.socket()
sk.connect(iaap)# 信息传输
while True:# 用户输入msg = input("请输入>>>").strip()if not msg:  # 防止输入为空,造成"卡空"continueif msg == "Q" or msg == "q":  # 正常退出操作break# 发送数据sk.send(msg.encode("utf-8"))# 接收数据date = sk.recv(1024)print(date.decode("utf-8"))# 关闭连接,释放资源
sk.close()

并发(1)

文件名: myprofile.py

iaap = ("127.0.0.1", 8010)

文件名: server.py

"""
利用 socketserver 实现并发
"""
import socketserver
from myprofile_1 import iaapclass RequestHandle(socketserver.BaseRequestHandler):def handle(self):# 打印查看它们是什么print(self.request)  # 相当于coonprint(self.client_address)# 数据传输部分while True:# -> 客户端非正常断开,windows报错,而mac和Linux不会报错但收到的date为空try:date = self.request.recv(1024)except:breakif not date:break# -> 发送信息self.request.send(date.upper())print()# 结束服务self.request.close()# 实例化??
sk = socketserver.ThreadingTCPServer(iaap, RequestHandle)
# 调用??
sk.serve_forever()

文件名: client.py

"""
利用 socketserver 实现并发
"""
import socket
from myprofile_1 import iaap# 基本步骤
sk = socket.socket()
sk.connect(iaap)# 信息传输
while True:# 信息输入msg = input("请输入>>>").strip()if not msg:continueif msg == "Q" or msg == "q":break# 发送数据sk.send(msg.encode("utf-8"))# 接收数据date = sk.recv(1024)print(date.decode("utf-8"))# 关闭连接,释放资源
sk.close()

并发(2)

文件名: myprofile.py

iaap = ("127.0.0.1", 8033)

文件名: server.py

"""使用"进程"实现并发效果"""
import socket
from multiprocessing import Process
from myprofile_2 import iaapdef task(conn, addr):# 连接信息提示ip, port = addrprint(f"成功连接客户端>>>\nIP>>>{ip}\n端口>>>{port}")# 通讯循环while True:# 防"bug"try:date = conn.recv(1024)except:breakif not date:break# 发送消息conn.send(date.upper())# 关闭连接conn.close()if __name__ == '__main__':# 基本部分sk = socket.socket()sk.bind(iaap)sk.listen(5)while True:# 获取连接对象conn, addr = sk.accept()# 将连接对象交给子进程操作# 先创建进程对象p = Process(target=task, args=(conn, addr))# 开始进程p.start()

文件名: client.py

"""使用"进程"实现并发效果"""
import socket
from myprofile_2 import iaapsk = socket.socket()
sk.connect(iaap)# 通讯循环
while True:# 信息输入msg = input("请输入>>>").strip()if not msg:breakif msg == "q" or msg == "Q":break# 发送信息sk.send(msg.encode("utf-8"))# 接收信息date = sk.recv(1024)print(date.decode("utf-8"))# 断开连接,释放资源
sk.close()

并发(3)

文件名: myprofile.py

iaap = ("127.0.0.1", 8001)

文件名: server.py

"""
使用线程实现并发效果
"""
import socket
from threading import Thread
from myprofile import iaapdef task(conn, addr):# 连接提示ip, port = addrprint(f"客户端>>>IP:{ip}<<< >>>端口:{port}<<<\n连接成功\n")# 通讯循环while True:# 接收信息try:date = conn.recv(1024)except:breakif not date:break# 发送信息conn.send(date.upper())# 关闭客户端连接print(f"客户端>>>IP:{ip}<<< >>>端口:{port}<<<正在关闭连接...")conn.close()print("连接已断开")if __name__ == '__main__':# 基本步骤sk = socket.socket()sk.bind(iaap)sk.listen(5)# 获取连接对象while True:coon, addr = sk.accept()# 创建线程,将对象交给线程进行服务t = Thread(target=task, args=(coon, addr))# 开始线程t.start()

文件名: client.py

"""
使用线程实现并发效果
"""import socket
from myprofile import iaap# 基本步骤
sk = socket.socket()
sk.connect(iaap)# 通讯循环
while True:# 信息输入msg = input("请输入>>>").strip()if not msg:continueif msg == "Q" or msg == "q":break# 发送消息sk.send(msg.encode("utf-8"))# 接收并打印消息date = sk.recv(1024)print(date.decode("utf-8"))# 关闭连接,释放资源
print("正在关闭连接...")
sk.close()
print("连接已断开")

网络编程(基于UDP协议)

基础

文件名: myprofile

iaap = ("127.0.0.1", 8002)

文件名: server

"""
udp协议下的套接字udp特点:
1.udp传输不可靠
2.udp不需要连接
"""
import socket
from myprofile import iaap# 1.创建socket对象
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # socket.SOCK_DGRAM 数据报协议# 2.绑定地址
sk.bind(iaap)# 3.通讯循环
while True:# 接收信息date, addr = sk.recvfrom(1024)# 发送信息sk.sendto(date.upper(), addr)# # 4.关闭服务器(可选)
# sk.close()

文件名: client

"""
udp协议下的套接字udp特点:
1.udp传输不可靠
2.udp不需要连接
"""
import socket
from myprofile import iaap# 1.创建socket对象
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 2.通讯循环
while True:# 输入数据msg = input("请输入>>>").strip()  # 发送不了"空"if not msg:continueif msg == "q" or msg == "Q":break# 发送数据sk.sendto(msg.encode("utf-8"), iaap)# 接收数据date, addr = sk.recvfrom(1024)print(date.decode("utf-8"))# 3.关闭连接,释放资源
print("正在断开连接...")
sk.close()
print("已断开")

并发

文件名: myprofile

iaap = ("127.0.0.1", 8000)

文件名: server

"""
利用 socketserver 实现并发
"""
import socketserver
import timefrom myprofile import iaapclass RequestHandle(socketserver.BaseRequestHandler):def handle(self):print(f"客户端发来的数据>>>{self.request[0]}")time.sleep(3)self.request[1].sendto(self.request[0].upper(), self.client_address)# 实例化对象???
sk = socketserver.ThreadingUDPServer(iaap, RequestHandle)
# 调用??
sk.serve_forever()

文件名: client

"""
利用 socketserver 实现并发
"""import socket
from myprofile import iaap# 基本部分
sk = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 通讯循环
while True:# 输入信息msg = input("请输入>>>").strip()if not msg:continueif msg == "q" or msg == "Q":break# 发送信息sk.sendto(msg.encode("utf-8"), iaap)# 接收信息date, addr = sk.recvfrom(1024)print(date.decode("utf-8"))# 关闭连接,释放资源
sk.close()

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

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

相关文章

【MBtiles数据索引和服务发布】GeoServer改造Springboot番外系列二

xyz地图服务访问示例&#xff1a;http://192.168.1.240:8081/gmserver/raster/xyz/firstWP:Imagery-raster/{z}/{x}/{y}.jpg 访问示例如下&#xff1a; mbtiles目录结构 根据z&#xff0c;x&#xff0c;y获取对应mbtiles文件路径的工具方法 说明&#xff1a;重点是使用getMb…

数据结构总结

数据结构总结 数据结构系列的文章从基本数据类型到数据结构&#xff0c;涵盖整型、布尔值、字符串、列表、元组、字典、集合、堆、栈、链表、树和图&#xff0c;以及队列和环等相关内容。 这里再补充一点&#xff1a;树和图都有更高阶的“玩法”&#xff0c;那就是加权——为每…

面对近期行情大起大落的伦敦银需要关注什么?

近期经常有听到投资者抱怨说&#xff0c;伦敦银价格没有明显趋势&#xff0c;很难做。确实&#xff0c;我们从日线图看&#xff0c;金价处于一个比较宽幅的横盘区间当中&#xff0c;近期的行情也是大涨大跌。投资者认为&#xff0c;面对大起大落的行情无从下手。下面我们就来讨…

必读人工智能数据管理的要点!

人工智能数据管理指企业如何管理系统中的数据。它是企业整体AI治理框架的关键组成部分。 在数据治理中&#xff0c;您可能希望包括以下要素&#xff1a; 可用性 数据提供给有需求的人员访问和使用。本文将回答企业中可访问数据人员的问题。 易用性 数据是结构化、已标注且…

SQL Server 函数参考手册

目录 SQL Server 字符串函数 SQL Server 数值函数 SQL Server 日期函数 SQL Server 高级函数 SQL Server 字符串函数 函数描述ASCII返回特定字符的 ASCII 值CHAR根据ASCII码返回字符CHARINDEX返回子字符串在字符串中的位置CONCAT将两个或多个字符串加在一起Concat with 将…

K8S故障临时设置节点为不可调度

一、K8s节点驱逐 节点驱逐是指将节点上运行的Pod迁移到其他可用节点上&#xff0c;并暂时从集群中移除目标节点。这个操作通常在节点维护、系统升级、硬件故障或者其它需要暂时离线节点的场景下使用。 二、使用场景 节点维护 在进行节点维护时&#xff0c;需要将节点暂时移除&…

河南省考后天网上确认,请提前准备证件照哦

✔报名时间&#xff1a;2024年1月18号一1月24号 ✔报名确认和缴费&#xff1a;2024年1月 31号一2月4号 ✔准考证打印&#xff1a;2024年3月12号一3月17号 ✔笔试时间&#xff1a;2024年3月16日-2024年3月17日。 ✔面试时间&#xff1a;面试时间拟安排在2024年5月中旬 报名网址&…

CCF-CSP 202312-2 因子化简(Java、C++、Python)

文章目录 因子化简题目背景问题描述输入格式输出格式样例输入样例输出样例解释子任务 满分代码JavaCPython线性筛法 因子化简 题目背景 质数&#xff08;又称“素数”&#xff09;是指在大于 1 的自然数中&#xff0c;除了 1 和它本身以外不再有其他因数的自然数。 问题描述…

2024.1.30

快速排序降序 #include<stdio.h> #include<string.h> #include<stdlib.h> int quick_sort(int arr[],int low,int high) {//基准值int keyarr[low];int low1low,high1high;if(low>high) return 0;while(low<high) {//high开始比较while(low1<high1…

安卓native报错:.cmake\api\v1\reply was not a directory

目录 前言一、报错信息二、报错分析总结 前言 之前编译的native工程提示找不到变量&#xff0c;使用Android studio新建的native工程也报错&#xff0c;这个原因苦了我好久&#xff0c;今天有时间仔细分析了下&#xff0c;希望能对同样有此问题的小伙伴有帮助。 一、报错信息…

提高 NFS Azure 文件共享性能

本文内容 适用于增加预读大小以提高读取吞吐量Nconnect另请参阅 本文介绍如何提高 NFS Azure 文件共享的性能。 适用于 展开表 文件共享类型SMBNFS标准文件共享 (GPv2)、LRS/ZRS 标准文件共享 (GPv2)、GRS/GZRS 高级文件共享 (FileStorage)、LRS/ZRS 增加预读大…

炒黄金 vs 炒股:探寻投资路线的差异和各自的优势

在当前不景气的股市&#xff0c;人们越来越关注分散投资的方式&#xff0c;以期降低风险并稳定资产。炒黄金成为了一个备受关注的投资选择&#xff0c;与传统炒股相比&#xff0c;它到底有什么区别呢&#xff1f;本文将从多个维度深入分析这两种投资方式的差异以及各自的优势。…

企业数字化转型会遇到哪些问题?思路是怎样的?

企业数字化转型在互联网时代的迅速发展下&#xff0c;行业领军企业都在逐步实现数字经济的发展&#xff0c;响应国家号召&#xff0c;将数字化技术应用完全应用到自身的企业&#xff0c;以提升企业价值。 那企业为什么要进行数字化转型呢? 数字化转型是在企业信息化已经完成的…

【Matplotlib】科研绘图——折线图

文章目录 1、导入2、定义Font及Style3、设置图像大小及坐标刻度4、数据准备5、自定义draw6、其他设置7、效果图 1、导入 import matplotlib import matplotlib.pyplot as plt from matplotlib.backends.backend_pdf import PdfPages import numpy as np import pandas as pd %…

CUDA 笔记

CUDA笔记 cuda 内存管理 cuda通过内存分配、数据传递、内存初始化、内存释放进行内存管理&#xff1b; Standard C FunctionCUDA C FunctionmalloccudaMallocmemcpycudaMemcpymemsetcudaMemsetfreecudaFree 内存分配 主机内存分配&#xff1a;extern void malloc(unsigned…

上海泗博EtherCAT转PROFINET网关TEC-380助力汇川伺服与西门子PLC实现高效协同

背景 在食品饮料生产线中&#xff0c;正杯机以其高精度的定位和运动控制能力确保每个杯子的精准填充与严密封口&#xff0c;而这一切得益于伺服驱动器的强大支持。 浙江某饮料加工生产线&#xff0c;中控系统使用S7-1511PLC控制伺服驱动器作为正杯机的动力与控制核心&#xff0…

探索1688店铺所有商品API接口:一键获取海量数据,开启商业智能新篇章

1688店铺所有商品API接口技术详解 一、概述 1688店铺所有商品API接口是阿里巴巴提供的一套应用程序接口&#xff0c;允许第三方开发者获取指定1688店铺下的所有商品信息。通过使用这个接口&#xff0c;开发者可以获取到店铺内所有商品的列表、详情、属性等信息&#xff0c;从…

JUC并发编程-四大函数式接口、Stream 流式计算、ForkJoin并行执行任务

12. 四大函数式接口 新时代的程序员&#xff1a;lambda表达式、链式编程、函数式接口、Stream流式计算 函数式接口&#xff1a;只有一个方法的接口&#xff0c;可以有一些默认的方法 如&#xff1a;Runnable接口函数 1&#xff09;Function 函数型接口 public class Functio…

二十大计算机专业证书,让你从芸芸众生中脱颖而出

目录 一. 前言 二. 计算机专业证书 三. 国内认证 3.1. 计算机技术与软件专业资格考试证书&#xff08;软考&#xff09; 3.2. 通信专业技术人员职业水平证书 3.3. 全国计算机等级考试证书&#xff08;NCRE&#xff09; 3.4. 全国计算机应用水平考试证书&#xff08;NIT&a…

###C语言程序设计-----C语言学习(8)## 斐波那契数列问题,素数问题,人数分配问题。

前言&#xff1a;感谢您的关注哦&#xff0c;我会持续更新编程相关知识&#xff0c;愿您在这里有所收获。如果有任何问题&#xff0c;欢迎沟通交流&#xff01;期待与您在学习编程的道路上共同进步。 今天&#xff0c;我们主要分享三个问题如何用C语言去求解&#xff0c;1.斐波…