之前我們一起實現過單執行緒的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...