Python-SocketServer
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python-SocketServer,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2237字,纯文字阅读大概需要4分钟。
内容图文
![Python-SocketServer](/upload/InfoBanner/zyjiaocheng/1242/2e4e952e87794230b13cf37d8fd816b4.jpg)
建立一个SocketServer,首先要创建一个请求处理类,这个类要继承BaseRequestHandler,还要重写父类里handle()方法,handle()方法在父类中为空的
然后实例化TCPServer,并且传递server ip和创建的请求处理类给这个TCPServer
服务器端
# -*-coding:utf-8-*- __author__ = "MuT6 Sch01aR" import socketserver,socket class MyTCPHandler(socketserver.BaseRequestHandler): #创建请求处理类,继承BaseRequestHandler def handle(self): #重写父类里handle()方法 while True: try: self.data = self.request.recv(1024).strip() print(‘来自‘,self.client_address[0]) print(self.data) self.request.send(self.data) except socket.error: print(‘客户端断开连接‘) break if __name__ == "__main__": HOST, PORT = "localhost", 9999 server = socketserver.TCPServer((HOST, PORT), MyTCPHandler) #实例化TCPServer # server = socketserver.UDPServer((HOST, PORT), MyTCPHandler) #实例化UDPServer server.serve_forever() #处理多个请求,一直执行 # servser.handle_request() #只处理一个请求
客户端
# -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import socket s = socket.socket() s.connect((‘localhost‘, 9999)) while True: cmd = input(‘>>>:‘).strip() if len(cmd) == 0:continue s.send(cmd.encode(‘utf-8‘)) print(s.recv(1024)) s.close()
运行结果
但是还是不能实现多个连接进行socket通信
socketserver多并发
服务器端
# -*-coding:utf-8-*- __author__ = "MuT6 Sch01aR" import socketserver,socket class MyTCPHandler(socketserver.BaseRequestHandler): def handle(self): while True: try: self.data = self.request.recv(1024).strip() print(‘来自‘,self.client_address[0]) print(self.data) self.request.send(self.data) except socket.error: print(‘客户端断开连接‘) break if __name__ == "__main__": HOST, PORT = "localhost", 9999 server = socketserver.ThreadingTCPServer((HOST, PORT), MyTCPHandler) #通过多线程实现TCPServer多并发 #server = socketserver.ForkingTCPServer((HOST, PORT), MyTCPHandler) #通过多进程实现TCPServer多并发 #server = socketserver.ThreadingUDPServer((HOST, PORT), MyTCPHandler) #通过多线程实现UDPServer多并发 #server = socketserver.ForkingUDPServer((HOST, PORT), MyTCPHandler) #通过多线程实现UDPServer多并发 server.serve_forever()
windows系统还不能用多进程进行socketserver多并发
客户端
# -*- coding:utf-8 -*- __author__ = "MuT6 Sch01aR" import socket s = socket.socket() s.connect((‘localhost‘, 9999)) while True: cmd = input(‘>>>:‘).strip() if len(cmd) == 0:continue s.send(cmd.encode(‘utf-8‘)) print(s.recv(1024)) s.close()
原文:https://www.cnblogs.com/sch01ar/p/8452191.html
内容总结
以上是互联网集市为您收集整理的Python-SocketServer全部内容,希望文章能够帮你解决Python-SocketServer所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。