概述
由于接收数据的recvfrom()方法会引起阻塞,在执行此方法时,不会接收键盘事件,也不会发送数据,为了解决此问题,就要用多线程编程
将接收数据的recvfrom()方法放到子线程中,主线程处理业务,也就是接收键盘事件,发送数据等
#coding=utf-8
import socket,threading
def recv():
while True:
data,addr=udp.recvfrom(1024)
print(data,addr)
if __name__ == "__main__":
udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
udp.bind(('0.0.0.0',8000))
print('绑定8000成功,开始接收数据...')
t=threading.Thread(target=recv)
t.start()
while True:
s=input('>')
udp.sendto(s.encode('UTF-8'),('172.20.10.2',8000))