通过上下文管理器编写面向对象tcp
发布日期:2022-02-17 04:52:27
浏览次数:8
分类:技术文章
本文共 1296 字,大约阅读时间需要 4 分钟。
对于系统资源如文件、数据库连接、socket而言,应用程序打开这些资源并执行完业务逻辑之后,必须做的一件事就是要关闭(断开)该资源。
在Python中打开过多的文件书写完成后没有及时关掉就会出现,Too many open files" 的错误,因为系统允许你打开的最大文件数量是有限的。 例如:在创建tcp和udp是用到的套接字,在程序运行结束后应该及时关掉下面是利用上下文管理器通过面向对象来书写tcp,自动关闭套接字.
上下文管理器:任何实现了 __enter__() 和 __exit__() 方法的对象都可称之为上下文管理器,上下文管理器对象可以使用 with 关键字。
# 客户端
import socket class Client(object): def __init__(self,ip,dk): self.ip = ip self.dk = dk def __enter__(self): self.tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.tcp_socket.connect((self.ip,self.dk)) send_mag = input('请输入信息:') self.tcp_socket.send(send_mag.encode()) data = self.tcp_socket.recv(1024) print(data.decode('gbk')) def __exit__(self, *args): self.tcp_socket.close() if __name__ == '__main__': with Client('192.168.90.22', 8080) astcp_socket: print("就好哈") # 服务器 import socket class Server(object): def __init__(self): self.tcp_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) self.tcp_socket.bind(('',8888)) self.tcp_socket.listen(128) def __enter__(self): self.client_socket, address= self.tcp_socket.accept() data = self.client_socket.recv(1024) print(data.decode('gbk')) mag = input('信息:') self.client_socket.send(mag.encode()) def __exit__(self, *args): self.client_socket.close() self.tcp_socket.close() with Server() as client_socket: print('完成!!!....')
转载地址:https://blog.csdn.net/qq_41429841/article/details/78975794 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2024年04月05日 05时16分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
UE4 PhyX物理引擎应用介绍
2019-04-26
UE4获取指定目录下所有文件
2019-04-26
UE4 遍历UserWidget下所有UI对象
2019-04-26
UE4 ReplicationGraph系统介绍
2019-04-26
过渡,动画与转换
2019-04-26
详解 弹性盒子
2019-04-26
js全选与全不选
2019-04-26
js放大镜
2019-04-26
js 倒计时demo
2019-04-26
js案例 生成行列随机颜色
2019-04-26
去除层叠样式表
2019-04-26
详解 移动端语义化标签
2019-04-26
2021年你还不知道的 移动端h5标签
2019-04-26
移动端常见布局的重要知识点
2019-04-26
scss --- css的预处理器
2019-04-26
移动web开发之流式布局(一)
2019-04-26
移动web开发之流式布局(二)
2019-04-26
模块化开发规范
2019-04-26
webpack入门介绍(一)
2019-04-26
webpack入门介绍(二) --- loaders
2019-04-26