zoukankan      html  css  js  c++  java
  • 多人聊天室

    基于python面向对象多人聊天室流程

    项目环境

    • 项目环境
      • 项目名称:多人聊天室
      • 项目模式:C/S
      • 开发环境:win10+python3.6+pycharm
      • 所需知识:python GUI编程,多线程编程,网络编程,数据库编程

    程序设计

    了解一下服务器扮演的角色,下面是服务器的业务流程。大致是怎样工作的

    • 首先服务器在指定的端口进行监听,等待客户的链接
    • 客户端链接到服务器之后,服务器开启单线程来处理该用户的请求
    • 处理线程等待客户端发送的请求
    • 服务器根据客户端请求类型的不同,调用不同处理的函数
    • 处理完客户端请求之后,再次回到第三步继续等待处理客户端新的请求

    客户端退出登录,服务器也会关闭对客户端的处理线程,释放资源

    响应协议设计

    我们都知道三次握手和四次挥手,这里呢我们约定了客户端发送什么样格式的数据给服务器,服务器又需要返回什么样格式的数据给客户端,客户端会有不同的请求,所以我们针对不同的请求个响应定义了需求个相应号,来区分不同的请求和响应

    网络上一般使用json和xml格式来传输数据,但是用他们来传输,对于我们的项目有点复杂,我们的项目没有这么复杂的数据,我们采用 |进行分割 ,然后拿到数据进行 split一下就可以了。

    • 登录响应格式: 1001|ret|nickname|username,其中 ret 代表服务器端验证的结果,如果是 0,表示服务端验证失败,后面的nickname username 会为空字符串,若是 1 ,表示服务端验证成功,nickname 为服务端返回的该用户的昵称, username 是该用户的用户名。
    • 聊天的响应格式:1002|nickname|message, nicakname 是为聊天信息发送者的昵称, message 是发送的聊天信息

    下面我们定义了服务端需要的一些常量,以及为了实现客户端和服务端通信定义的一些协议编号,协议编号如下

    config.py
    # ----服务器相关配置----
    SERVER_IP = '127.0.0.1'  # 服务器IP地址
    SERVER_PORT = 8090  # 服务器端口号
    
    # ----数据协议相关配置----
    REQUEST_LOGIN = '0001'  # 登录请求
    REQUEST_CHAT = '0002'  # 聊天请求
    RESPONSE_LOGIN_RESULT = '1001'  # 登录结果响应
    RESPONSE_CHAT = '1002'  # 聊天响应
    DELIMITER = '|'  # 自定义协议数据分隔符
    

    面向对象的思想

    界面展示

  • 相关阅读:
    nacos 命名空间
    Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column. To disable safe mode, toggle the option in Preferences
    gitee
    maven引入junit 4.12,项目import org.junit.Test 还是报错.
    gitflow
    202011
    idea 忽略显示不需要的文件
    服务熔断 & 降级区别
    各种微服务框架对比
    zookeeper not connected
  • 原文地址:https://www.cnblogs.com/zc110/p/12838451.html
Copyright © 2011-2022 走看看