python使用多執行緒編寫tcp客戶端程式
阿新 • • 發佈:2020-01-09
今天在網上找了半天,發現很多關於此題目的程式都只能接收資料,所以隨便找了個程式研究了一下,然後做出一些修改
程式碼如下:
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('請輸入要傳送的內容') tcp_socket.send(send_msg.encode('utf-8')) if send_msg == "exit": true = False def main(): while True: print('*'*50) print('1 傳送訊息\n2 接收訊息') option = int(input('請選擇操作內容')) print('*'*50) if option == 1: threading.Thread(target=send_msg,args=(tcp_socket,)).start() elif option == 2: threading.Thread(target=rece_msg,)).start() else: print('輸入有誤') break if __name__ == '__main__': main()
該程式碼只能實現要麼一直髮送,要麼一直接收
執行如圖
傳送資料時截圖
接收資料時截圖
為解決只能單方傳送和接收問題,現將程式碼修改如下
from socket import * import threading tcp_socket = socket(AF_INET,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('請輸入要傳送的內容\n') tcp_socket.send(send_msg.encode('utf-8')) if send_msg == "exit": true = False threading.Thread(target=send_msg,)).start() threading.Thread(target=rece_msg,)).start()
執行結果
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。