专栏首页python3socket作业——聊天系统

socket作业——聊天系统

使用UDP协议来做

要求:

1.使用软件开发规划来做,尽量使用面向对象的思想编程。

2. 先执行登录程序,三次登录失败直接退出程序。登录成功和失败记录日志。

3. 登录成功之后,自动启动客户端。服务端手动启动,用来和客户端交互

4. 登录成功之后,能执行相应的操作(查看所有用户,查看我的好友,添加我的好友,删除我的好友,退出)

5. 聊天信息显示当前时间

6. 进阶需求:

    1.所有菜单展示隔行换色。

    2.每个用户有自己的颜色,(从文件中读取)

    3.聊天信息,展示自己的颜色。

流程图如下:

我创建的目录和文件结构如下:

chat
├── bin
│   └── start.py  # 开始程序
├── conf
│   └── settings.py  # 配置文件
├── core
│   ├── checkfiles.py  # 检查配置文件
│   ├── client.py  # 客户端
│   ├── login.py  # 登录模块
│   ├── main.py  # 核心程序
│   └── server.py  # 服务器
├── db
│   └── user_info.txt  # 用户认证文件
├── lib
│   ├── mylogger.py  # 自定义日志模块
│   ├── mypickle.py  # 自定义pickle模块
│   ├── mysocket.py  # 自定义socket模块
│   └── Prompt.py  # 自定义颜色显示模块
└── log
    └── test.log  # 日志文件

user_info.txt我存的是字典

{'username': 'xiao', 'password': '123', 'color': 'red','friends':[],'ip': ('127.0.0.1', 9090)}

建议不要使用以下格式:

xiao|123|red|...

因为经常有人遇到,切割的时候,忘了去掉空格或者换行符。导致登录失败,纠结几个小时。

为了避免这种问题,使用字典,就可以了。

完整代码我上传到github.com中

地址为:

https://github.com/py3study/chat

登录成功之后,菜单列表展示为隔行换色

默认创建好了4个用户。效果如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 查询云服务商可用区地域分布及 ping 值延迟

    业务扩展到XX城市,该地有哪些云服务商可用区?我的网络到这些可用区的 ping 延迟是多少?到哪个服务商的延迟最低?

    Accesshub
  • SSH延迟太高,试试mosh吧!

    毫无疑问,SSH是远程服务器管理最实用的方法。然而,它的主导地位并不意味着它在某些情况下没有缺点。如果您曾在移动设备上使用过SSH,那么,你应该知道SSH的一些...

    不会飞的蝴蝶
  • 防火墙实战

    domain0
  • BGP高防IP专业版产品介绍

    资源整合,为单用户提供1.7T超大防护能力(未来可至3T以上、拥有业界最大BGP防护带宽资源)

    云加社区专栏
  • 完整的一次 HTTP 请求响应过程(二)

    上篇文章 我们完整的描述了计算机五层模型中的『应用层』和『运输层』,阐述了较为复杂的 TCP 协议的相关原理,相信大家一定也有所收获,那么本篇将继续五层模型的学...

    Single
  • 警惕SNMP默认团体名导致的网络入侵

    *本文作者:ipenox;本文属 FreeBuf 原创奖励计划,未经许可禁止转载。

    FB客服
  • Java中的NIO基础知识

    上一篇介绍了五种NIO模型,本篇将介绍Java中的NIO类库,为学习netty做好铺垫

    Janti
  • 第二十六天 网络编程【悟空教程】

    在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

    奋斗蒙
  • iptables简单应用

    可以修改/etc/rc.d/boot.local让规则重启后也能生效,如: /sbin/iptables -F /sbin/iptables -A INP...

    一见
  • 基础巩固——你应该这么理解TCP的三次握手和四次挥手

    网络传输层负责最底层的底层链路连接。两台主机之间进行互联,基于网线的物理硬件上的协议。在这个侧面,主机与主机之间只认得硬件mac编码。并不认识IP。

    Janti

扫码关注云+社区

领取腾讯云代金券