公司电脑不让用IM工具聊天?50行代码写个聊天室! 世界新消息

来源 |麦叔编程


【资料图】

作者 |小K

今天来写个聊天室功能,该程序只有几十行代码,这比动辄几百兆的通讯软件包来说简直就是“神纯净版本”。而且关闭解释环境之后是不会留下任何信息痕迹的,所以可以放心使用。

原理/流程

需要用到TCP/IP协议,Socket技术。

我们需要先建立一个主机,让他监听对应的端口号。
如果有客户端访问该端口号\建立TCP连接。
主机收到有客户端上线的提示,并向该客户端发送消息。
客户端收到消息之后也可以向主机发送消息。

先写个主机端(Server)

importsockethost=socket.gethostname()#获取主机地址port=8888#设置端口号nick_name="麦叔"s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((host,port))#绑定地址s.listen(1)#设置最多连接数量sock,addr=s.accept()#被动接收TCP客户端连接print("Connected")info=sock.recv(1024).decode()#接收Client数据while"Quit"notininfo:ifinfo:print(info)send_data=input("输入发送内容:")send_data=nick_name+":"+send_datasock.send(send_data.encode())#发送TCP数据包if"Quit"insend_data:breakinfo=sock.recv(1024).decode()#接收Client数据sock.close()#关闭客户端Sockets.close()#关闭服务端Socket

主机端代码分为三部分,

第一部分:构建主机的HOST和PORT...创建监听任务;

第二部分:接收\发送数据;

第三部分:当输入“Quit”之后,断开连接,程序结束(影响客户端)。

再写个客户端(Client)

importsockets=socket.socket()#创建TCP/IP套接字host=socket.gethostname()#获取主机地址port=8888nick_name="小K"s.connect((host,port))#初始化TCP服务器连接print("ClientConnected")info=""while"Quit"notininfo:send_data=input("输入发送的内容:")send_data=nick_name+":"+send_datas.send(send_data.encode())#发送TCP数据if"Quit"insend_data:breakinfo=s.recv(1024).decode()#接收服务端数据print(info)s.close()#关闭Socket连接

客户端代码分也为三部分,

第一部分:构建HOST和PORT信息,并与主机端创建连接;

第二部分:接收\发送数据;

第三部分:当输入“Quit”之后,断开连接,程序结束(不影响主机端)。

试试功能

使用两个命令行终端,分别运行两个代码文件。

聊天功能。

体验非常好!

后记

上文的两段代码只是实现了最简单的聊天功能,如果想做得更像一个聊天室,可以在上面的代码中对其进行深度开发。

最后可能会开发出一个QQ一样的程序~

关键词: 断开连接 发送消息 第一部分

推荐DIY文章
主机存在磨损或划痕风险 PICO4便携包宣布召回
穿越湖海!特斯拉Cybertruck电动皮卡可以当“船”用
vivoXFold+折叠旗舰开售 配备蔡司全焦段旗舰四摄
飞凡R7正式上市 全系标配换电架构
中兴Axon30S开售 拥有黑色蓝色两款配色
荣耀MagicBookV14 2022正式开售 搭载TOF传感器
it