专栏首页编程Python让你自己做一个软件,自己开个聊天室,厉害吧!

Python让你自己做一个软件,自己开个聊天室,厉害吧!

内容

知识点

asyncore 、asynchat模块运用

环境

python 3.5

功能描绘

在本实验中,我们将实现一个简略的图形界面谈天系统。我们可以经过图形客户端登录谈天室,并与其他成员进行谈天。

分析

由于 Python 是一门带 GIL 的语言,所以在 Python 中运用多线程处理IO操作过多的使命并不是很好的选择。同时谈天服务器将同多个 socket 进行通信,所以我们可以根据 asyncore 模块实现谈天服务器。aysncore 模块是一个异步的 socket 处理器,经过运用该模块将大大简化异步编程的难度。asynchat 模块在 asyncore 模块的基础上做了进一步封装,简化了根据文本协议的忘了通信使命的开发难度。

已然要开发谈天程序,那必然需要规划谈地利运用的协议。为了简略起见,我们将要开发的谈天服务器只支撑文本协议,经过 command message的方式调用相关的操作。比如如果客户端发送以下文本,将执行相应的操作

步骤

服务器类

这里我们首先需要一个聊天服务器类,经过继承 asyncore 的 dispatcher 类来完成,我们编写 server.py文件:

本文来自企鹅号 - IT技术java交流媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 数据库连接池的选择

    新年的第一个工作日,愿我们的2018更好! 在基于JVM的后台开发的中,在高并发场景下,往往会有一些对象,如数据库连接、线程...等对象,它的创建和初始化需要的...

    企鹅号小编
  • 机房传统UPS和模块化UPS有什么区别?

    前言: 了解模块化UPS的人都知道,如今模块化UPS成为很多企业的新宠,市场份额节节攀高,机房UPS电源产品层出不穷,模块化UPS具有良好的可用性和稳定性,就算...

    企鹅号小编
  • Python模块

    Python模块 可以将代码量较大的程序分割成多个有组织的、彼此独立但又能相互交互的代码片段,这些自我包含的有组织的代码段就是模块 模块在物理形式上表现为以.p...

    企鹅号小编
  • Flutter中ListView加载图片数据的优化

    在使用ListView懒加载模式时,当ListView的Item中有图片信息时,在快速滚动过程中会大量的浪费流量与内存,甚至会造成在滚动过程中页面的卡顿效果。

    早起的年轻人
  • Spring Boot使用CORS解决跨域问题

    Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等。 CORS 与 JSONP 相比: 1、 JSONP 只能实现 GET 请...

    itlemon
  • 用python模拟地球飞越火星

    春节档的几部电影里,《流浪地球》成为一匹黑马,刷爆微博和朋友圈,从最初不高的排片率,一跃上升到票房榜首。

    Crossin先生
  • 在线微信用户IP获取

    周俊辉
  • [译]JS 模块化历史简介

    对于 JavaScript 来说,模块化是一个相对现代的概念,这篇文章会带你在 JavaScript 的世界里快速浏览模块化的历史进程~

    savokiss
  • NSA 的 Python 手册

    Python 开发者现在可以观摩下美国情报机构 NSA 是如何培训 Python 程序员的。软件工程师 Chris Swenson 根据信息自由法案递交申请,要...

    Debian社区
  • 聊聊debezium的OffsetCommitPolicy

    debezium-v1.1.1.Final/debezium-api/src/main/java/io/debezium/engine/spi/OffsetCo...

    codecraft

扫码关注云+社区

领取腾讯云代金券