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)文章
解決python?pip安裝第三方模塊報(bào)錯(cuò):error:legacy-install-failure
pip是python的第三方庫(kù)管理器,可以根據(jù)所開(kāi)發(fā)項(xiàng)目的需要,使用pip相關(guān)命令安裝不同庫(kù),下面這篇文章主要給大家介紹了關(guān)于解決python?pip安裝第三方模塊報(bào)錯(cuò):error:?legacy?-?install?-?failure的相關(guān)資料,需要的朋友可以參考下2023-04-04
python區(qū)塊鏈簡(jiǎn)易版交易實(shí)現(xiàn)示例
這篇文章主要為大家介紹了python區(qū)塊鏈簡(jiǎn)易版交易實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
Fiddler如何抓取手機(jī)APP數(shù)據(jù)包
Fiddler,這個(gè)是所有軟件開(kāi)發(fā)者必備神器!這款工具不僅可以抓取PC上開(kāi)發(fā)web時(shí)候的數(shù)據(jù)包,而且可以抓取移動(dòng)端,通過(guò)本文給大家介紹Fiddler如何抓取手機(jī)APP數(shù)據(jù)包,感興趣的朋友一起學(xué)習(xí)吧2016-01-01
PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片
這篇文章主要介紹了PyQt5 實(shí)現(xiàn)給無(wú)邊框widget窗口添加背景圖片的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03
Python實(shí)現(xiàn)飛機(jī)大戰(zhàn)項(xiàng)目
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)飛機(jī)大戰(zhàn)項(xiàng)目,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-07-07
Python3.5以上版本lxml導(dǎo)入etree報(bào)錯(cuò)的解決方案
這篇文章主要介紹了Python3.5以上版本lxml導(dǎo)入etree報(bào)錯(cuò)的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-06-06
django將網(wǎng)絡(luò)中的圖片,保存成model中的ImageField的實(shí)例
今天小編就為大家分享一篇django將網(wǎng)絡(luò)中的圖片,保存成model中的ImageField的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
Python實(shí)現(xiàn)為Excel中每個(gè)單元格計(jì)算其在文件中的平均值
這篇文章主要為大家詳細(xì)介紹了如何基于Python語(yǔ)言實(shí)現(xiàn)對(duì)大量不同的Excel文件加以跨文件、逐單元格平均值計(jì)算,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-10-10

