python實(shí)現(xiàn)的多任務(wù)版udp聊天器功能案例
本文實(shí)例講述了python實(shí)現(xiàn)的多任務(wù)版udp聊天器。分享給大家供大家參考,具體如下:
說(shuō)明
編寫一個(gè)有2個(gè)線程的程序
線程1用來(lái)接收數(shù)據(jù)然后顯示
線程2用來(lái)檢測(cè)鍵盤數(shù)據(jù)然后通過(guò)udp發(fā)送數(shù)據(jù)
要求
實(shí)現(xiàn)上述要求
總結(jié)多任務(wù)程序的特點(diǎn)
參考代碼:
import socket import threading def send_msg(udp_socket): """獲取鍵盤數(shù)據(jù),并將其發(fā)送給對(duì)方""" while True: # 1. 從鍵盤輸入數(shù)據(jù) msg = input("\n請(qǐng)輸入要發(fā)送的數(shù)據(jù):") # 2. 輸入對(duì)方的ip地址 dest_ip = input("\n請(qǐng)輸入對(duì)方的ip地址:") # 3. 輸入對(duì)方的port dest_port = int(input("\n請(qǐng)輸入對(duì)方的port:")) # 4. 發(fā)送數(shù)據(jù) udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port)) def recv_msg(udp_socket): """接收數(shù)據(jù)并顯示""" while True: # 1. 接收數(shù)據(jù) recv_msg = udp_socket.recvfrom(1024) # 2. 解碼 recv_ip = recv_msg[1] recv_msg = recv_msg[0].decode("utf-8") # 3. 顯示接收到的數(shù)據(jù) print(">>>%s:%s" % (str(recv_ip), recv_msg)) def main(): # 1. 創(chuàng)建套接字 udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2. 綁定本地信息 udp_socket.bind(("", 7890)) # 3. 創(chuàng)建一個(gè)子線程用來(lái)接收數(shù)據(jù) t = threading.Thread(target=recv_msg, args=(udp_socket,)) t.start() # 4. 讓主線程用來(lái)檢測(cè)鍵盤數(shù)據(jù)并且發(fā)送 send_msg(udp_socket) if __name__ == "__main__": main()
更多關(guān)于Python相關(guān)內(nèi)容可查看本站專題:《Python Socket編程技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
關(guān)于Qt6中QtMultimedia多媒體模塊的重大改變分析
如果您一直在 Qt 5 中使用 Qt Multimedia,則需要對(duì)您的實(shí)現(xiàn)進(jìn)行更改。這篇博文將嘗試引導(dǎo)您完成最大的變化,同時(shí)查看 API 和內(nèi)部結(jié)構(gòu)2021-09-09Python讀取mat文件,并轉(zhuǎn)為csv文件的實(shí)例
今天小編就為大家分享一篇Python讀取mat文件,并轉(zhuǎn)為csv文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-07-07Python利用PyQt5制作一個(gè)獲取網(wǎng)絡(luò)實(shí)時(shí)NBA數(shù)據(jù)并播報(bào)的GUI程序
現(xiàn)在NBA聯(lián)賽也進(jìn)行到半決賽了,我們?cè)趺礃硬拍芤愿斓姆椒ǐ@取NBA的數(shù)據(jù)呢?這里我們就自己來(lái)做一個(gè)數(shù)據(jù)播報(bào)的程序,需要的朋友可以參考下2021-06-06在python中利用最小二乘擬合二次拋物線函數(shù)的方法
今天小編就為大家分享一篇在python中利用最小二乘擬合二次拋物線函數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12PyCharm遠(yuǎn)程調(diào)試代碼配置以及運(yùn)行參數(shù)設(shè)置方式
這篇文章主要介紹了PyCharm遠(yuǎn)程調(diào)試代碼配置以及運(yùn)行參數(shù)設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01詳解Python中的format格式化函數(shù)的使用方法
這篇文章主要介紹了詳解Python中的format格式化函數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11Python實(shí)現(xiàn)地圖可視化folium完整過(guò)程
Folium是一個(gè)基于leaflet.js的Python地圖庫(kù),其中,Leaflet是一個(gè)非常輕的前端地圖可視化庫(kù),本文重點(diǎn)給大家介紹Python實(shí)現(xiàn)地圖可視化folium完整過(guò)程,感興趣的朋友跟隨小編一起看看吧2021-05-05python高手之路python處理excel文件(方法匯總)
用python來(lái)自動(dòng)生成excel數(shù)據(jù)文件。python處理excel文件主要是第三方模塊庫(kù)xlrd、xlwt、xluntils和pyExcelerator,除此之外,python處理excel還可以用win32com和openpyxl模塊2016-01-01