![4ccc50cd932d48334e67b8bbd1cfeaac.png](https://img-blog.csdnimg.cn/img_convert/4ccc50cd932d48334e67b8bbd1cfeaac.png)
一个python实战的小项目,利用socke模块和curses模块写了一个局域网聊天室。
- 适用人群:熟悉python,对socket与多线程和有一定的了解。
- socket:实现信息的传递。
- curses:客户端控制数据显示。
项目的架构如下:
![be875dac88140780236e97135be2366b.png](https://img-blog.csdnimg.cn/img_convert/be875dac88140780236e97135be2366b.png)
服务器端
![c1bf0464b102dfd60c2b9b4c3856917b.png](https://img-blog.csdnimg.cn/img_convert/c1bf0464b102dfd60c2b9b4c3856917b.png)
- 由于服务器需要同时为多个客户端服务,因此我们需要使用多个线程,每一个线程响应一个客户端。
- 通过为每个线程赋予不同的socket来使其接收不同客户端传来的数据。
客户端
![78a4f34296ce3199a008d04a9c01faea.png](https://img-blog.csdnimg.cn/img_convert/78a4f34296ce3199a008d04a9c01faea.png)
- 客户端需要同时处理读和写两件事,因此也需要两个线程,分别用于接收服务器传来的数据并显示在curses以及从curses接收数据发送到服务器端。
- curses库为基于文本的终端提供独立于终端的屏幕绘制和键盘处理设施,可以通过curses模块在控制台指定位置输出和输入文本。
最终效果图
![591b099970c758e72c974d50ffb3f288.png](https://img-blog.csdnimg.cn/img_convert/591b099970c758e72c974d50ffb3f288.png)
源代码地址:
heucoder/LocalNetChatgithub.com![8a99675f46da3f1b4e43170690f4aec1.png](https://img-blog.csdnimg.cn/img_convert/8a99675f46da3f1b4e43170690f4aec1.png)
或许你对这些也感兴趣:
超爱学习:半小时搭建简易ftp服务器zhuanlan.zhihu.com![88ec3bf3eb4de3bb6416635e13919ac8.png](https://img-blog.csdnimg.cn/img_convert/88ec3bf3eb4de3bb6416635e13919ac8.png)