博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python全栈之路系列之socketserver实现多并发
阅读量:4538 次
发布时间:2019-06-08

本文共 1765 字,大约阅读时间需要 5 分钟。

利用socketserver实现多并发,socketserver内部会调用socket模块进行功能上的实现

client.py客户端脚本文件内容

#!/usr/bin/env python# _*_ coding:utf-8 _*_import socket# 创建一个socket对象obj = socket.socket()# 制定服务端的IP地址和端口obj.connect(('127.0.0.1', 999, ))# 阻塞,等待服务端发送内容,接受服务端发送过来的内容,最大接受1024字节ret_bytes = obj.recv(1024)# 因为服务端发送过来的是字节,所以我们需要把字节转换为字符串进行输出ret_str = str(ret_bytes, encoding="utf-8")# 输出内容print(ret_str)while True:    # 当进入连接的时候,提示让用户输入内容    inp = input("Client请输入要发送的内容>>> ")    # 如果输出q则退出    if inp == "q":        # 把q发送给服务端        obj.sendall(bytes(inp, encoding="utf-8"))        # 退出当前while        break    else:        # 否则就把用户输入的内容发送给用户        obj.sendall(bytes(inp, encoding="utf-8"))        # 等待服务端回答        print("正在等待Server输入内容......")        # 获取服务端发送过来的结果        ret = str(obj.recv(1024), encoding="utf-8")        # 输出结果        print(ret)# 连接完成之后关闭链接obj.close()

server.py服务端脚本文件内容

#!/usr/bin/env python# _*_ coding:utf-8 _*_import socketserverclass MyServer(socketserver.BaseRequestHandler):    def handle(self):        conn = self.request        conn.sendall(bytes("你好,欢迎登陆!", encoding="utf-8"))        while True:            # 输出等待客户端发送内容            print("正在等待Client输入内容......")            # 接收客户端发送过来的内容            ret_bytes = conn.recv(1024)            # 转换成字符串类型            ret_str = str(ret_bytes, encoding="utf-8")            # 输出用户发送过来的内容            print(ret_str)            # 如果用户输入的是q            if ret_str == "q":                # 则退出循环,等待下个用户输入                break            # 给客户端发送内容            inp = input("Service请输入要发送的内容>>> ")            conn.sendall(bytes(inp, encoding="utf-8"))if __name__ == "__main__":    server = socketserver.ThreadingTCPServer(('127.0.0.1', 999, ), MyServer)    server.serve_forever()

转载于:https://www.cnblogs.com/ethereala/p/9012257.html

你可能感兴趣的文章
自动化测试框架selenium+java+TestNG——配置篇
查看>>
测量标准体重
查看>>
(转)关于Android中为什么主线程不会因为Looper.loop()里的死循环卡死?引发的思考,事实可能不是一个 epoll 那么 简单。...
查看>>
SQL*Plus 系统变量之32 - NEWP[AGE]
查看>>
Spring配置文件总结
查看>>
4.三角形面积
查看>>
基础-事务
查看>>
MAC下安装与配置MySQL [转]
查看>>
ERROR: ld.so: object '/usr/lib64/libtcmalloc.so.4' from LD_PRELOAD cannot be preloaded: ignored
查看>>
爬虫入门【10】Pyspider框架简介及安装说明
查看>>
android面试(4)---文件存储
查看>>
(转载) 标准C中的字符串操作函数
查看>>
如何提高android串口kernel log等级
查看>>
Docker快速配置指南
查看>>
Python基础---OS模块 (二)
查看>>
【JS点滴】substring和substr以及slice和splice的用法和区别。
查看>>
awk多模式匹配
查看>>
线段树
查看>>
a span等行内元素加margin属性后无效果解决方案
查看>>
傻瓜式硬盘重装win7系统图文加视频教程
查看>>