亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2021年08月20日 10:54:29   作者:wangziwenhk  
這篇文章主要為大家詳細介紹了python實現多人聊天室,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

python聊天室

很多人都覺得微信,QQ,ICQ(我不知道現在還能不能用了)都過于垃圾,想要自己做一個聊天室(或是聊天軟件),所以我們可以自己做一個。

想要做出聊天室(或是聊天軟件),我們就需要搞清楚它們的原理,這里我們用一個圖片

來給你們看

我們可以看到,服務端其實就只是起到了一個轉發(fā)消息的原理,搞清楚原理,就開始做

服務端

import socket,threading #導入文件
def shou(new_s,socket_list):#創(chuàng)建一個收的函數
    try:
        nikename = new_s.recv(1024).decode('utf-8').strip()#為當前客戶端執(zhí)行一次‘收'來獲取
    except:
        new_s.close()#關閉當前客戶端的套接字
        socket_list.remove(new_s)#去除套接字列表里的nes_s
        for i in socket_list:
            i.send('\n公告:一個未知的人離開了聊天室......'.encode('utf-8'))#廣播
        return None
    for i in socket_list:
        i.send(f'\n公告:歡迎{nikename}進入了聊天室........\n'.encode('utf-8'))#廣播
    while 1:
        try:
            recv_data = new_s.recv(1024).decode('utf-8')#如果接受到了客戶端發(fā)來的信息
            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#跳出循環(huán)
def fa(new_s):
    while 1:
        msg = input('')#發(fā)出
        new_s.send(msg.encode('utf-8'))
#創(chuàng)建套接字
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#綁定
s.bind(("",5678))#端口
#監(jiān)聽
s.listen(5)
print('服務端處于監(jiān)聽狀態(tài),等待客戶端接入..........')
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
#創(chuàng)建套接字
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()
#發(fā)送按鈕
btn_frame = tk.Frame(app,width=480,height=20)
btn_frame.grid(row=2,column=0,sticky='E')
button = tk.Button(btn_frame,text='發(fā)送',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

總結

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

相關文章

  • python 尋找list中最大元素對應的索引方法

    python 尋找list中最大元素對應的索引方法

    今天小編就為大家分享一篇python 尋找list中最大元素對應的索引方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python實現url長短鏈接的轉換

    Python實現url長短鏈接的轉換

    短鏈接,通俗來說,就是將長的URL網址,通過程序計算等方式,轉換為簡短的網址字符串。本文將用Python語言實現這一效果,需要的可以參考一下
    2022-11-11
  • 使用PyTorch實現去噪擴散模型的完整代碼

    使用PyTorch實現去噪擴散模型的完整代碼

    在本文中,我們將深入研究DDPM的復雜性,涵蓋其訓練過程,包括正向和逆向過程,并探索如何執(zhí)行采樣,在整個探索過程中,我們將使用PyTorch從頭開始構建DDPM,并完成其完整的訓練,需要的朋友可以參考下
    2024-01-01
  • Python爬蟲基于lxml解決數據編碼亂碼問題

    Python爬蟲基于lxml解決數據編碼亂碼問題

    這篇文章主要介紹了Python爬蟲基于lxml解決數據編碼亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Python 如何查找特定類型文件

    Python 如何查找特定類型文件

    這篇文章主要介紹了Python 如何定位特定類型文件,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-08-08
  • Python內建類型dict深入理解源碼學習

    Python內建類型dict深入理解源碼學習

    這篇文章主要為大家介紹了Python內建類型dict的深入理解及源碼學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 利用Python實現眨眼計數器的示例代碼

    利用Python實現眨眼計數器的示例代碼

    這篇文章主要介紹了如何使用Python語言實現對視頻中的人物的眨眼進行計數并描繪在圖表中,文中的實現步驟講解詳細,感興趣的可以動手試一試
    2022-02-02
  • 在python帶權重的列表中隨機取值的方法

    在python帶權重的列表中隨機取值的方法

    今天小編就為大家分享一篇在python帶權重的列表中隨機取值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • 一文了解Python并發(fā)編程的工程實現方法

    一文了解Python并發(fā)編程的工程實現方法

    這篇文章主要介紹了Python并發(fā)編程的工程實現,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • np.where在多維數組的應用方式

    np.where在多維數組的應用方式

    這篇文章主要介紹了np.where在多維數組的應用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02

最新評論