python 3.7.4 asyncio 聊天 服务器 全双工 群发 私信 中文

基于 https://blog.csdn.net/ns2250225/article/details/81322292 修改而成。
1.clinet 增加了一个线程用于发送信息
2.client支持显示中文信息
3.增加了一个群发的处理函数。
原文中 有两个地方比较费解
1.handler 使用了元类。初始化的时候会生成一个dict字典_msg_handlers ,这个字典里面用__msgtype__这个变量做key,存放类型为MetaHandler的类( ErrorHandler 、Register、SendTextMsg、Unregister ), 通过接收的msg的type调用不同的handle处理收到的msg。
2.server 对接收的bytes的处理process data。
运行环境win10 x64,python 3.7.4 x64,工具visual studio 2019 企业版 (断点挺好用的,可以看清楚各个变量的当前值,推荐-。期待.net Core 3.0)。
先运行 服务器server.py 然后打开几个客户端newclient.py 就可以了。

在这里插入图片描述
上面是运行的情况

只放服务端代码和客户端代码 其他还有几个类就不放出了 直接下载就可以了

服务器端


import asyncio
import json

from handlers import MessageHandler

# 消息頭長度 int or uint
_MESSAGE_PREFIX_LENGTH = 4
# 字節序
_BYTE_ORDER = 'big'


class myImProtocol(asyncio.Protocol):

    _buffer = b''     # 數據緩衝Buffer
    _msg_len = None   # 消息長度

    def data_received(self, data):

        while data:
            data = self.process_data(data)

    def process_data(self, data):
        """
        Called when some data is received.

        This method must be implemented by subclasses

        The argument is a bytes object.
        """
        self._buffer += data

        # For store the rest data out-of a full message
        _buffer = None

        if self._msg_len is None:
            # If buffer length < _MESSAGE_PREFIX_LENGTH return for more data
            if len(self._buffer) < _MESSAGE_PREFIX_LENGTH:
                return

            # If buffer length >= _MESSAGE_PREFIX_LENGTH
            self._msg_len = int.from_bytes(self._buffer[:_MESSAGE_PREFIX_LENGTH], byteorder=_BYTE_ORDER)

            # The left bytes will be the message body
            self._buffer = self._
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Python 3.7.4官方中文文档是Python编程语言官方发布的文档的翻译版本。Python是一种简单易学的高级编程语言,广泛应用于各种领域,包括Web开发、数据分析、人工智能等。官方文档提供了详尽的关于Python语言的说明,包括语法、内置函数、模块等方面的内容,对于初学者和有经验的开发者都是非常有价值的参考资料。 Python 3.7.4是Python 3.x系列的一个版本,其中3.x系列是基于Python 2.x系列的重大改进和升级。Python 3.7.4在之前版本的基础上进行了诸多改进和修复,提升了性能和稳定性,同时引入了一些新的特性和功能。 官方中文文档的翻译版本在整体结构和内容上与原版保持一致,使得广大中国Python开发者能够更方便地学习和使用Python编程语言。它包含了Python各个方面的详细说明,包括标准库、语言参考、教程、开发工具等内容。无论是初学者还是有一定经验的开发者,都可以通过官方中文文档了解Python语言的基础知识和高级特性。 Python 3.7.4官方中文文档具有如下特点:首先,语言简洁易懂,注重实用性,使得初学者能够较快地上手编程;其次,提供了详细的文档和示例代码,使得开发者能够深入理解和熟练运用Python编程语言;再次,更新及时,保持了与官方英文文档的同步,可以了解到Python最新版本的特性和变化;最后,提供了各种主题的文档,包括模块详解、语言参考、开发工具等,满足不同层次和需求的开发者。 总而言之,Python 3.7.4官方中文文档是Python编程语言的权威参考资料,对于学习和使用Python的开发者来说是非常有价值的资源。无论是初学者还是有经验的开发者,都可以通过阅读官方中文文档来更好地理解和掌握Python编程语言。 ### 回答2: Python 3.7.4官方中文文档是Python编程语言的官方文档的中文翻译版本。它包含了关于Python语法、标准库、模块和常用功能的详细说明和示例。 Python 3.7.4是Python编程语言的一个特定版本,而它的官方中文文档内容则是针对这个版本的。这份文档的目的是为了帮助初学者理解Python编程语言的基本原理和用法,以及提供高级开发人员参考的信息。 该文档的结构清晰,涵盖了Python的各个方面,包括基本语法、数据类型、流程控制、函数和模块等。此外,它还介绍了Python标准库的各种模块和功能,如文件操作、网络编程、数据库连接和图形界面开发等。 这份文档提供了大量的示例代码,以便读者可以更好地理解和应用所学的知识。同时,它还提供了许多实用的技巧和建议,可以帮助开发人员写出高效、可重用和可维护的Python代码。 除了基础知识和常用功能外,Python 3.7.4官方中文文档还包括了一些高级主题,例如并发编程、正则表达式、装饰器和生成器等。这些主题可以帮助开发人员扩展其Python编程技能,并解决更复杂的问题。 总之,Python 3.7.4官方中文文档是一份非常有用的参考资料,无论是初学者还是有经验的开发人员,都可以从中获得帮助和指导。它是掌握和提高Python编程技能的重要资源。 ### 回答3: Python 3.7.4官方中文文档是Python编程语言的官方指南,用于帮助初学者和有经验的程序员学习和使用Python。这个文档涵盖了Python 3.7.4版本的所有主要特性和功能,并提供了详细的解释、示例代码和参考文档。 文档的结构很清晰,主要分为教程、库参考和语言参考三部分。教程部分从基本的语法和数据类型开始介绍,包括变量、操作符、控制语句、函数和模块等概念。然后逐渐深入到更高级的主题,如异常处理、文件操作、正则表达式和面向对象编程等。每个主题都有详细的解释和示例代码,方便理解和实践。 库参考部分列出了Python标准库中各个模块的用法和功能。这些模块包括了各种常用的功能,如文件和目录操作、网络编程、数据库访问、图形界面和多线程等。文档提供了详细的说明和示例,帮助读者了解和使用这些库。 语言参考部分是Python语言的完整参考手册,包括了语法、操作符、控制结构和内置函数等。这个部分详细说明了Python语言的各个方面和特性,对于想要更深入了解Python的读者来说非常有用。 总的来说,Python 3.7.4官方中文文档是一个全面、详细的Python学习和参考资料。无论是初学者还是有经验的程序员,都能从中获得可靠和权威的信息。阅读这个文档可以帮助读者更好地理解和应用Python编程语言。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值