如何通过实例学习Python的socketserver模块网络编程技巧?
- 内容介绍
- 文章标签
- 相关推荐
本文共计844个文字,预计阅读时间需要4分钟。
本文实例讲解了Python网络编程:socketserver的基本使用方法。分享给广大开发者参考,具体如下:
内容概述:+ socketserver介绍+ socketserver的使用+ socketserver的异步服务端+ 首发时间:2018-03
详细内容:+ socketserver介绍Python的socketserver模块提供了一种基于socket的网络服务端实现方式,可以简化网络服务的开发过程。
+ socketserver的使用
1.导入模块:import socketserver
2.创建继承自socketserver.BaseRequestHandler的类,重写handle方法
3.创建socketserver.TCPServer或socketserver.UDPServer实例,指定服务端地址和端口
4.启动服务:server.serve_forever()
+ socketserver的异步服务端
socketserver提供了异步服务端的支持,通过继承socketserver.ThreadingMixIn实现。这样可以提高服务端处理并发请求的能力。+ 首发时间:2018-03本文首发于2018年3月,至今已帮助众多开发者学习和应用socketserver模块。
本文实例讲述了python网络编程:socketserver的基本使用方法。分享给大家供大家参考,具体如下:
本文内容:
- socketserver的介绍
- socketserver的使用
- socketserver的异步服务端
首发时间:2018-03-21
也可以使用socketserver来创建socket
socketserver的介绍:
- socketserver是标准库中的一个高级模块
- socketserver可以简化创建客户端跟创建服务端的代码
socketserver的使用:
- 首先导入模块:import socketserver
- 初始化控制器类Handler
-
- init():初始化控制设置,初始化连接套接字,地址,处理实例等信息
- handle(): 定义了如何处理每一个连接。
- setup(): 在handle()之前执行.一般用作设置默认之外的连接配置
- finish():在handle()之后执行。
- 变量:
-
- self.request属性是套接字对象,所以使用self.request.xxxx调用套接字的函数
- self.server包含调用处理程序的实例
- self.client_address是客户端地址信息
- 定义服务端类型:
-
- TCPServer 支持ipv4的TCP协议的服务器。
- server=socketserver.TCPServer((HOST,PORT),Handler)
- UDPServer 支持ipv4的UDP协议的服务器。
- server=socketserver.UDPServer((HOST,PORT),Handler)
- TCPServer 支持ipv4的TCP协议的服务器。
- 运行服务端
-
- 持续循环运行:serve_forever(),即使一个连接报错了,但不会导致程序停止,而是会持续运行,与其他客户端通信
- server.serve_forever()
- 停止server_forever:shutdown()
- server.shutdown()
- 持续循环运行:serve_forever(),即使一个连接报错了,但不会导致程序停止,而是会持续运行,与其他客户端通信
服务端:
import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): try: while True: self.data=self.request.recv(1024) print("{} send:".format(self.client_address),self.data) if not self.data: print("connection lost") break self.request.sendall(self.data.upper()) except Exception as e: print(self.client_address,"连接断开") finally: self.request.close() def setup(self): print("before handle,连接建立:",self.client_address) def finish(self): print("finish run after handle") if __name__=="__main__": HOST,PORT = "localhost",9999 server=socketserver.TCPServer((HOST,PORT),MyTCPHandler) server.serve_forever()
客户端:
import socket client=socket.socket() client.connect(('localhost',9999)) while True: cmd=input("(quit退出)>>").strip() if len(cmd)==0: continue if cmd=="quit": break client.send(cmd.encode()) cmd_res=client.recv(1024) print(cmd_res.decode()) client.close()
socketserver的异步服务端:
多线程:ThreadingTCPServer
多进程:ForkingTCPServer(Unix)
多线程版:
import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): try: while True: self.data=self.request.recv(1024) print("{} send:".format(self.client_address),self.data) if not self.data: print("connection lost") break self.request.sendall(self.data.upper()) except Exception as e: print(self.client_address,"连接断开") finally: self.request.close() def setup(self): print("before handle,连接建立:",self.client_address) def finish(self): print("finish run after handle") HOST,PORT = "localhost",9999 server=socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler)#多线程版 server.serve_forever()
更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
本文共计844个文字,预计阅读时间需要4分钟。
本文实例讲解了Python网络编程:socketserver的基本使用方法。分享给广大开发者参考,具体如下:
内容概述:+ socketserver介绍+ socketserver的使用+ socketserver的异步服务端+ 首发时间:2018-03
详细内容:+ socketserver介绍Python的socketserver模块提供了一种基于socket的网络服务端实现方式,可以简化网络服务的开发过程。
+ socketserver的使用
1.导入模块:import socketserver
2.创建继承自socketserver.BaseRequestHandler的类,重写handle方法
3.创建socketserver.TCPServer或socketserver.UDPServer实例,指定服务端地址和端口
4.启动服务:server.serve_forever()
+ socketserver的异步服务端
socketserver提供了异步服务端的支持,通过继承socketserver.ThreadingMixIn实现。这样可以提高服务端处理并发请求的能力。+ 首发时间:2018-03本文首发于2018年3月,至今已帮助众多开发者学习和应用socketserver模块。
本文实例讲述了python网络编程:socketserver的基本使用方法。分享给大家供大家参考,具体如下:
本文内容:
- socketserver的介绍
- socketserver的使用
- socketserver的异步服务端
首发时间:2018-03-21
也可以使用socketserver来创建socket
socketserver的介绍:
- socketserver是标准库中的一个高级模块
- socketserver可以简化创建客户端跟创建服务端的代码
socketserver的使用:
- 首先导入模块:import socketserver
- 初始化控制器类Handler
-
- init():初始化控制设置,初始化连接套接字,地址,处理实例等信息
- handle(): 定义了如何处理每一个连接。
- setup(): 在handle()之前执行.一般用作设置默认之外的连接配置
- finish():在handle()之后执行。
- 变量:
-
- self.request属性是套接字对象,所以使用self.request.xxxx调用套接字的函数
- self.server包含调用处理程序的实例
- self.client_address是客户端地址信息
- 定义服务端类型:
-
- TCPServer 支持ipv4的TCP协议的服务器。
- server=socketserver.TCPServer((HOST,PORT),Handler)
- UDPServer 支持ipv4的UDP协议的服务器。
- server=socketserver.UDPServer((HOST,PORT),Handler)
- TCPServer 支持ipv4的TCP协议的服务器。
- 运行服务端
-
- 持续循环运行:serve_forever(),即使一个连接报错了,但不会导致程序停止,而是会持续运行,与其他客户端通信
- server.serve_forever()
- 停止server_forever:shutdown()
- server.shutdown()
- 持续循环运行:serve_forever(),即使一个连接报错了,但不会导致程序停止,而是会持续运行,与其他客户端通信
服务端:
import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): try: while True: self.data=self.request.recv(1024) print("{} send:".format(self.client_address),self.data) if not self.data: print("connection lost") break self.request.sendall(self.data.upper()) except Exception as e: print(self.client_address,"连接断开") finally: self.request.close() def setup(self): print("before handle,连接建立:",self.client_address) def finish(self): print("finish run after handle") if __name__=="__main__": HOST,PORT = "localhost",9999 server=socketserver.TCPServer((HOST,PORT),MyTCPHandler) server.serve_forever()
客户端:
import socket client=socket.socket() client.connect(('localhost',9999)) while True: cmd=input("(quit退出)>>").strip() if len(cmd)==0: continue if cmd=="quit": break client.send(cmd.encode()) cmd_res=client.recv(1024) print(cmd_res.decode()) client.close()
socketserver的异步服务端:
多线程:ThreadingTCPServer
多进程:ForkingTCPServer(Unix)
多线程版:
import socketserver class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): try: while True: self.data=self.request.recv(1024) print("{} send:".format(self.client_address),self.data) if not self.data: print("connection lost") break self.request.sendall(self.data.upper()) except Exception as e: print(self.client_address,"连接断开") finally: self.request.close() def setup(self): print("before handle,连接建立:",self.client_address) def finish(self): print("finish run after handle") HOST,PORT = "localhost",9999 server=socketserver.ThreadingTCPServer((HOST,PORT),MyTCPHandler)#多线程版 server.serve_forever()
更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。

