gpt4 book ai didi

python聊天室(虽然很简洁,但是可以用)

转载 作者:qq735679552 更新时间:2022-09-27 22:32:09 34 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python聊天室(虽然很简洁,但是可以用)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

  。

python聊天室

很多人都觉得微信,QQ,ICQ(我不知道现在还能不能用了)都过于垃圾,想要自己做一个聊天室(或是聊天软件),所以我们可以自己做一个.

想要做出聊天室(或是聊天软件),我们就需要搞清楚它们的原理,这里我们用一个图片 。

python聊天室(虽然很简洁,但是可以用)

来给你们看 。

我们可以看到,服务端其实就只是起到了一个转发消息的原理,搞清楚原理,就开始做 。

  。

服务端

import socket,threading #导入文件def shou(new_s,socket_list):#创建一个收的函数    try:        nikename = new_s.recv(1024).decode("utf-8").strip()#为当前客户端执行一次‘收"来获取    except:        new_s.close()#关闭当前客户端的套接字        socket_list.remove(new_s)#去除套接字列表里的nes_s        for i in socket_list:            i.send("公告:一个未知的人离开了聊天室......".encode("utf-8"))#广播        return None    for i in socket_list:        i.send(f"公告:欢迎{nikename}进入了聊天室........".encode("utf-8"))#广播    while 1:        try:            recv_data = new_s.recv(1024).decode("utf-8")#如果接受到了客户端发来的信息            print(recv_data)#仅作提醒用            for i in socket_list:                i.send(f"{nikename}:{recv_data}".encode("utf-8"))#广播        except:            new_s.close()#关闭当前客户端的套接字            socket_list.remove(new_s)#去除套接字列表里的nes_s            for i in socket_list:                i.send(f"公告:{nikename}离开了聊天室......".encode("utf-8"))#广播            break#跳出循环def fa(new_s):    while 1:        msg = input("")#发出        new_s.send(msg.encode("utf-8"))#创建套接字s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#绑定s.bind(("",5678))#端口#监听s.listen(5)print("服务端处于监听状态,等待客户端接入..........")socket_list = []while 1:    #接入    new_s,addr = s.accept()    print("客户端已接入")    socket_list.append(new_s)    new_s.send("请输入昵称:".encode("utf-8"))    t1 = threading.Thread(target=shou,args=(new_s,socket_list))    t2 = threading.Thread(target=fa,args=(new_s,))    t1.start()    t2.start()# new_s.close()# s.close()

  。

客户端

怎么样,服务端是不是很简单?接下来我们做客户端 。

import socket,threadingimport tkinter as tk#创建套接字a = 1s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.connect(("127.0.0.1",5678))#此处端口看服务端的端口,127.0.0.1要改成服务端主机的ipv4地址print("已链接服务端,通讯加密中")def shou(s,msg_texe):    recv_data = s.recv(1024).decode("utf-8")    msg_text.insert(tk.END, recv_data)    while 1:        recv_data = s.recv(1024).decode("utf-8")        msg_text.insert(tk.END,recv_data)def fa():    global a    if a == 0:        msg = input_text.get("0.0",tk.END)        s.send(msg.encode("utf-8"))        input_text.delete("0.0",tk.END)    else:        msg = input_text.get("0.0", tk.END)        s.send(msg.encode("utf-8"))        input_text.delete("0.0", tk.END)        msg_text.delete("0.0", tk.END)        a = 0app = tk.Tk()app.title("聊天室")#显示消息框msg_frame = tk.Frame(app,width=480,height=300)msg_frame.grid(row=0,column=0,padx=6,pady=6)msg_frame.grid_propagate(0)#固定Frame的大小msg_text = tk.Text(msg_frame,bg="white")msg_text.grid()# msg_text.insert("0.0","hhh")#输入input_frame = tk.Frame(app,width=480,height=100)input_frame.grid(row=1,column=0)input_frame.grid_propagate(0)input_text = tk.Text(input_frame,bg="white")input_text.grid()#发送按钮btn_frame = tk.Frame(app,width=480,height=20)btn_frame.grid(row=2,column=0,sticky="E")button = tk.Button(btn_frame,text="发送",command=fa)button.grid()#线程t1 = threading.Thread(target=shou,args=(s,msg_text))t1.daemon = Truet1.start()app.mainloop()#s.close()

伸手党下载链接:https://pan.baidu.com/s/1KD6p_a2KgFxbOVN5yftQRw 。

提取码:2iwk 。

  。

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注我的更多内容! 。

原文链接:https://blog.csdn.net/wangziwenhk/article/details/119810028 。

最后此篇关于python聊天室(虽然很简洁,但是可以用)的文章就讲到这里了,如果你想了解更多关于python聊天室(虽然很简洁,但是可以用)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com