这次咱们用Python做个多线程的聊天室,全程用到了socket跟线程的知识。为了让你看得明白,我把搭建环境、搞懂核心概念这两步都写在前面了。动手之前先过一遍这两个知识点能帮你少踩坑。 多线程这块,主要是靠Python自带的threading.Thread类。它的构造函数参数虽然看着多,但你只用记住group填None,target填启动时要调用的函数,name默认是Thread-N就行。args和kwargs就是传值用的元组和字典。最关键的一个方法就是start(),用来启动线程。 至于socket怎么用,先得把它import进来。通常咱们会把服务器和客户端分开写。服务器端得走四步:先创建socket对象,用AF_INET(对应IPv4)和SOCK_STREAM(指定TCP协议)来构造。接着把IP和端口绑定上,一般写个127.0.0.1或者0.0.0.0都行,端口号记得别挑1024以下的,需要管理员权限。然后开始监听连接,队列里最多存5个。最后就是等着接客了,accept()会阻塞住直到客户端来了。 客户端这边就简单了,连三步:connect连上服务器、send发消息、recv收消息。不过要注意收发消息的顺序最好商量好,还有接收是阻塞的操作,为了不耽误发送,收包最好新开个线程去做。 照着这个流程图来写代码逻辑就顺了。服务器端是循环接受客户端并把连接存起来,所有客户端共享一个消息队列。收到一条消息后遍历列表广播给所有人。因为收发都得是独立线程才能避免卡顿。 这次咱们的代码限两个人聊天,消息之间用|分割。具体实现因为篇幅有限就不贴全了,你自己补全剩下的逻辑就行。