Python3 socketserver 实现局域网通信
来源:互联网 发布:mac osx yosemite.vdi 编辑:程序博客网 时间:2024/06/17 02:10
在本文中,将介绍如何利用python中的socketserver模块来实现局域网通信,本文只介绍相应的方法而不介绍详细的设计。
SocketServer简化了网络服务器的编写。在进行socket创建时,使用SocketServer会大大减少创建的步骤,并且SocketServer使用了select它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer。这4个类是同步进行处理的,另外通过ForkingMixIn和ThreadingMixIn类来支持异步。
使用SocketServer的步骤简介
- 首先,你必须创建一个请求处理类,它是BaseRequestHandler的子类并重载其handle()方法。也可以继承自socketserver.StreamRequestHandler 或者socketserver.DatagramRequestHandler ;
- 实例化一个服务器类,传入服务器的地址和请求处理程序类。
- 最后,调用handle_request()(一般是调用其他事件循环或者使用select())或serve_forever()。
代码实现
服务端
# encoding: utf-8'''Created on 2017-7-3@author: lzmwhu'''import socketserver#继承StreamRequestHandler类,并重写其中的handle方法,该方法是在每个请求到来之后都会调用class ThreadedTCPRequestHandler(socketserver.StreamRequestHandler): def handle(self): #这里是将传进的数据加上Hello 之后再返回,继承自StreamRequestHandler可以使用wfile这个类文件(file-like)对象 data = str(self.request.recv(1024), 'utf-8') print(data) data = bytes("Hello " + data, "utf-8") self.wfile.write(data) #write()方法只能写入bytes类型#该类是实现多请求并发处理,只需要继承socketserver.ThreadingMixIn即可,内部无需多加处理,采用默认方法。class ThreadedTCPServer(socketserver.ThreadingMixIn, socketserver.TCPServer): passif __name__ == "__main__": #如果是在局域网内实现通信,则必须将地址绑定在该PC在局域网中的地址 #如果只是本机通信则为"localhost"或者"127.0.0.1"即可 HOST, PORT = "192.128.26.129", 8081 server = ThreadedTCPServer((HOST, PORT), ThreadedTCPRequestHandler) with server: server.serve_forever()
客户端测试
# encoding: utf-8'''Created on 2017-5-7@author: lmzwhu'''import socketdef client(ip, port, message): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.connect((ip, port)) sock.sendall(bytes(message, 'utf-8')) response = str(sock.recv(1024), 'utf-8') print("Received: {}".format(response))HOST, PORT = "192.168.26.129", 8081for i in range(3): message = input(">") client(HOST, PORT, message)
测试结果为:
服务端
客户端
阅读全文
0 0
- Python3 socketserver 实现局域网通信
- multicastSocket实现单播组播 局域网通信
- Python实现SocketServer(一)
- SocketServer 实现 tcp server
- Python网络编程03----Python3.*中socketserver
- Python3 网络套接字(socket / socketserver)
- Python3之socketserver(Any last word?)
- 利用Python中SocketServer 实现客户端与服务器间非阻塞通信
- socket套接字通信及socketserver通信
- 利用Winsock控件实现局域网通信(一)
- 利用Winsock控件实现局域网通信(二)
- 利用Winsock控件实现局域网通信(一)
- 利用Winsock控件实现局域网通信(二)
- 利用Winsock控件实现局域网通信
- C#做服务器,客户端,实现局域网通信
- 网络编程~C++实现局域网通信
- MFC UDP CSocket实现局域网通信
- 局域网内主机之间Socket通信实现
- 浅谈团队项目管理
- Android Butter Knife 框架——最好用的View注入
- 从输入网址到显示网页的全过程分析
- WEB前端使用 webpack + reack 搭建框架 02 本地服务 与 热替换(react-hot-loader)
- python3脚本使用sql loader批量导入字节文件并二次处理
- Python3 socketserver 实现局域网通信
- spark企业经典案例之手机app流量统计
- 操作系统——页面置换算法
- Myeclipse 更改web项目的访问名
- 首页学习--banner的动画及轮播
- 【BZOJ】2431 [HAOI2009]逆序对数列 递推
- Mac OS X 安装Tensorflow
- Qt Qsyntaxhighlighter给QTextEdit设置丰富的语法高亮格式
- CentOS安装到完成项目部署操作记录