栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【Python】socket编程——使用socketserver模块建立基于TCP协议通信的服务

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Python】socket编程——使用socketserver模块建立基于TCP协议通信的服务

题目

使用socketserver模块建立基于tcp协议通信的服务,收到客户端发来的英文字符串之后,将其变为大写发回客户端。

相关知识

socketserver模块简化了编写网络服务程序的任务,是python 标准库中很多服务器框架的基础。

  • socketserver中包含了两种类,一种为服务类(server class) ,一种为请求处理类(request handle class),前者主要做的是建立链接的过程,后者注重用户数据的处理。
  • 要实现一项服务,必须派生一个request handler class请求处理类,并重写父类的handle()方法。handle方法就是用来专门是处理请求的。该模块是通过服务类和请求处理类组合来处理请求的。
  • socketserver模块提供的请求处理类有baseRequestHandle

代码示例

服务端:

#coding:utf-8
#author:Mitchell
# 服务端必须满足至少三点:
# 1. 绑定一个固定的ip和port
# 2. 一直对外提供服务,稳定运行
# 3. 能够支持并发
import socketserver
# 自定义类用来处理通信循环
class MyTCPhanler(socketserver.baseRequestHandler):
    def handle(self):
        while True:
            try:
                data = self.request.recv(1024)
                if len(data) == 0:
                    break
                print('-->收到客户端的消息: ', data)
                self.request.send(data.upper())
            except ConnectionResetError:
                break
        self.request.close()
if __name__ == '__main__':
    server=socketserver.ThreadingTCPServer(('127.0.0.1',8081),MyTCPhanler)
    server.serve_forever() # 链接循环

客户端:

#coding:utf-8
#author:于海涛
#客户端
from socket import *
#使用IPV4协议,使用UDP协议传输数据
client = socket(AF_INET, SOCK_STREAM)
client.connect(('127.0.0.1', 8081))
# 通信循环
while True:
    sdata = input("请输入要发送的数据:")
    if sdata == 'q':
        break
    client.send(sdata.encode('utf-8'))
    data=client.recv(1024)
    print(data)
client.close()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461791.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号