python udp的應用 ,多執行緒實現聊天功能

2021-08-10 18:20:32 字數 1331 閱讀 2898

之前我們一起實現過單執行緒的udp聊天功能,但是並不實用,這裡我們用多執行緒重新寫下

**如下:

import socket

import threading

defprint_menu

():"""顯示選單"""

print("請輸入你要進行的操作: 1 傳送資料 2接收資料 3退出")

defrecv_data

(udp_socket):

"""接收資料"""

# 資料 傳送人位址

data, remote_address = udp_socket.recvfrom(4096)

print("收到來自%s的資料-----%s" % (remote_address, data.decode()))

defsend_data

(udp_socket):

"""傳送資料"""

""" 請輸入你要傳送的資料:你吃了大蒜嗎?

埠:8080

"""# 接收使用者輸入的資料 ip port

data = input("請輸入你要傳送的資料:")

port = int(input("埠:"))

udp_socket.sendto(data.encode(), (ip, port))

defmain

():# 顯示乙個介面(選單) 請輸入你要進行的操作: 1 傳送資料 2退出

# 建立乙個子執行緒 專門收資料

# 主線程 用以接收使用者鍵盤輸入 傳送

# 建立套接字

udp_socket = socket.socket(socket.af_inet, socket.sock_dgram)

# 建立執行緒 收資料

recv_thd = threading.thread(target=recv_data, args=(udp_socket,))

recv_thd.start()

# 在使用之前進行繫結

udp_socket.bind(('', 8888))

while

true:

print_menu()

# 接收使用者輸入

op = input("請選擇:")

if op == '1':

send_data(udp_socket)

elif op == '2':

break

else:

print("出錯了")

# 關閉

udp_socket.close()

if __name__ == '__main__':

main()

多執行緒的應用

一 程序和執行緒的概念 每乙個程式執行都是乙個程序,都有乙個執行的路徑,在這個程序中又有很多的執行緒,來執行不同的 就想我們在電腦上同時開啟許多個程式一樣,如果是單核cpu處理器的情況,那麼,cpu只會執行乙個程式,而我們視覺上感覺都在執行,那是因為cpu在完成快速的切換 在main函式中,進行著乙...

多執行緒應用

例題 編寫兩個執行緒,一乙個執行緒列印1 52 的整數,另乙個執行緒列印字母a z。列印順序為12a34b56c.5152z.即按照整數和字母的順序從小到大列印,並且每列印兩個整數後,列印一 個字母,交替迴圈列印,直到列印到整數52和字母z結束。要求 1 編寫列印類printer,宣告私有屬性ind...

Java 多執行緒的應用

class info 主資訊類 public string getname public void setcontent string content public string getcontent public synchronized void set string name,string c...