多线程实现udp网络通信

Posted njhbk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程实现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()

 



















以上是关于多线程实现udp网络通信的主要内容,如果未能解决你的问题,请参考以下文章

UDP和多线程服务器

UDP和多线程服务器

(四)Android基于UDP的多客户端语音通信

Linux网络基础

Linux网络(C++)——网络套接字(TCP/UDP编程模型)多进程,多线程,线程池服务器开发(画图解析)

Java网络编程基于UDP的聊天通信