多线程实现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()

猜你喜欢

转载自www.cnblogs.com/njhbk/p/9986626.html