1. 程式人生 > >多執行緒實現udp網路通訊

多執行緒實現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()