多執行緒實現udp網路通訊
本章節將介紹主執行緒與子執行緒的關係;使用udp利用多執行緒在python環境下實現全雙工通訊程式碼的兩種實現。(未完待續。。。)
一、主執行緒與子執行緒的關係:
1,若主執行緒無程式碼執行,主執行緒將等待子執行緒結束而結束。
2,執行緒的執行並無先後順序。
3,若主執行緒因特殊原因先結束,子執行緒也同時結束。
4,只有當用Thread創建出來的例項物件,被start方法呼叫時,才會建立執行緒並執行。
二、程式碼如下:
1,自定義類物件實現:
import socket
#匯入多執行緒模組
import threading
#定義udp通訊類物件
class UDP_TALKER(object):
def __init__(self):
self.udp_socket = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
self.udp_socket.bind(('',8880))
def send(self):
while True :
message = input('請輸入傳送訊息:')
self.udp_socket.sendto(message.encode('utf-8'),('',8881))
def recv(self):
while True :
info = self.udp_socket.recvfrom(1024)
print(info[0].decode('utf-8'))
def run_forever(self):
# threading.Thread(target = 函式名,args = (元組引數))
#返回例項物件,建立執行緒
t1 = threading.Thread(target = self.send)
t2 = threading.Thread(target = self.recv)
#呼叫執行緒
t1.start()
t2.start()
def main():
udp_talker = UDP_TALKER()
udp_talker.run_forever()
if __name__ == '__main__':
main()