python使用多線程編寫(xiě)tcp客戶端程序
今天在網(wǎng)上找了半天,發(fā)現(xiàn)很多關(guān)于此題目的程序都只能接收數(shù)據(jù),所以隨便找了個(gè)程序研究了一下,然后做出一些修改
代碼如下:
from socket import * import threading tcp_socket = socket(AF_INET, SOCK_STREAM) tcp_socket.connect(('192.168.1.102', 8080)) true = True def rece_msg(tcp_socket): global true while true: recv_msg = tcp_socket.recv(1024).decode("utf8") if recv_msg == "exit": true = False print('接收到的信息為:%s' % recv_msg) def send_msg(tcp_socket): global true while true: send_msg = input('請(qǐng)輸入要發(fā)送的內(nèi)容') tcp_socket.send(send_msg.encode('utf-8')) if send_msg == "exit": true = False def main(): while True: print('*'*50) print('1 發(fā)送消息\n2 接收消息') option = int(input('請(qǐng)選擇操作內(nèi)容')) print('*'*50) if option == 1: threading.Thread(target=send_msg, args=(tcp_socket,)).start() elif option == 2: threading.Thread(target=rece_msg, args=(tcp_socket,)).start() else: print('輸入有誤') break if __name__ == '__main__': main()
該代碼只能實(shí)現(xiàn)要么一直發(fā)送,要么一直接收
運(yùn)行如圖
發(fā)送數(shù)據(jù)時(shí)截圖
接收數(shù)據(jù)時(shí)截圖
為解決只能單方發(fā)送和接收問(wèn)題,現(xiàn)將代碼修改如下
from socket import * import threading tcp_socket = socket(AF_INET, SOCK_STREAM) tcp_socket.connect(('192.168.1.102', 8080)) true = True def rece_msg(tcp_socket): global true while true: recv_msg = tcp_socket.recv(1024).decode("utf8") if recv_msg == "exit": true = False print('接收到的信息為:%s\n' % recv_msg) def send_msg(tcp_socket): global true while true: send_msg = input('請(qǐng)輸入要發(fā)送的內(nèi)容\n') tcp_socket.send(send_msg.encode('utf-8')) if send_msg == "exit": true = False threading.Thread(target=send_msg, args=(tcp_socket,)).start() threading.Thread(target=rece_msg, args=(tcp_socket,)).start()
運(yùn)行結(jié)果
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python3 socket即時(shí)通訊腳本實(shí)現(xiàn)代碼實(shí)例(threading多線程)
- python使用多線程+socket實(shí)現(xiàn)端口掃描
- 解決python ThreadPoolExecutor 線程池中的異常捕獲問(wèn)題
- 解決python多線程報(bào)錯(cuò):AttributeError: Can''t pickle local object問(wèn)題
- python實(shí)現(xiàn)自動(dòng)化報(bào)表功能(Oracle/plsql/Excel/多線程)
- python多線程實(shí)現(xiàn)TCP服務(wù)端
- Python實(shí)現(xiàn)多線程/多進(jìn)程的TCP服務(wù)器
- Python3多線程版TCP端口掃描器
- python單線程下實(shí)現(xiàn)多個(gè)socket并發(fā)過(guò)程詳解
- 詳解C語(yǔ)言和Python中的線程混用
相關(guān)文章
Python使用VIF實(shí)現(xiàn)檢測(cè)多重共線性
多重共線性是指多元回歸模型中有兩個(gè)或兩個(gè)以上的自變量,它們之間具有高度的相關(guān)性,本文主要介紹了如何使用VIF實(shí)現(xiàn)檢測(cè)多重共線性,需要的可以參考下2023-12-12Python將列表中的元素轉(zhuǎn)化為數(shù)字并排序的示例
今天小編就為大家分享一篇Python將列表中的元素轉(zhuǎn)化為數(shù)字并排序的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12python自帶緩存lru_cache用法及擴(kuò)展的使用
本篇博客將結(jié)合python官方文檔和源碼詳細(xì)講述lru_cache緩存方法是怎么實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08基于Python實(shí)現(xiàn)一個(gè)春節(jié)倒計(jì)時(shí)腳本
春節(jié)即將到來(lái),本文將為大家介紹一個(gè)通過(guò)Python實(shí)現(xiàn)的春節(jié)倒計(jì)時(shí)腳本,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以自己動(dòng)手嘗試一下2022-01-01Python實(shí)現(xiàn)RGB與HSI顏色空間的互換方式
今天小編就為大家分享一篇Python實(shí)現(xiàn)RGB與HSI顏色空間的互換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11Python WXPY實(shí)現(xiàn)微信監(jiān)控報(bào)警功能的代碼
本篇文章主要介紹了Python WXPY實(shí)現(xiàn)微信監(jiān)控報(bào)警功能的代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-10-10探索Python元類(lèi)與class語(yǔ)句協(xié)議掌握類(lèi)的控制權(quán)
這篇文章主要介紹了通過(guò)Python元類(lèi)與class語(yǔ)句協(xié)議掌握類(lèi)的控制權(quán)探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01