一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python聊天室(雖然很簡潔,但是可以用)

python聊天室(雖然很簡潔,但是可以用)

2021-12-22 10:55wangziwenhk Python

這篇文章主要為大家詳細介紹了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,threading
import tkinter as tk
#創建套接字
a = 1
s = 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 = 0

app = 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 = True
t1.start()
app.mainloop()
#s.close()

伸手黨下載鏈接:https://pan.baidu.com/s/1KD6p_a2KgFxbOVN5yftQRw

提取碼:2iwk

 

總結

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜深情在线观看免费 | 精品国产mmd在线观看 | 狗老公小说 | 国产精品久久久久影视不卡 | 盲井在线| 美女视频黄a | 99免费在线视频 | 国产精品嫩草影院一二三区入口 | www.麻豆| 国产精品九九热 | 第一次做m被调教经历 | 天天草b | 日本免费一区二区三区四区五六区 | 国产91短视频 | 无删减影视免费观看 | 911色_911色sss在线观看 | 婷婷伊人综合亚洲综合网 | 9191免费永久观看 | bl双性受乖调教改造身体 | 99re8在这里只有精品2 | 色老汉 | 欧美一区不卡二区不卡三区 | 亚洲黄色图 | 极品丝袜乱系列在线阅读 | 日韩免费一区 | chinese国产老太性 | 丰满艳妇亲伦视频 | 秘书小说| 四虎精品影视 | yellow视频在线观看 | 久久免费看少妇高潮A片JA | 久久99国产精品二区不卡 | 亚洲 欧美 国产 日韩 字幕 | 国产免费一区不卡在线 | 小柔的性放荡羞辱日记 | 国产成人精品日本亚洲网址 | 嫩草视频在线观看视频播放 | 国产精品videosse | 免费网址视频在线看 | 故意短裙公车被强好爽在线播放 | 日韩成人在线视频 |