继续学习socket UDP的内容!
经过学习收发之后,我们把收发写在一个文件内,这样可以跟别的小伙伴一起进行互动!
这次多了一个模块,不了解的可以先放在一边,主要学习的还是socket。
threading 是Python里面多线程模块。这里不做讲解
大家只要晓得几个步骤会使用即可
# 导入模块import threading
# 创建线程t1 = threading.Thread(target=接收, args=(socket_udp,))t2 = threading.Thread(target=发送, args=(socket_udp,))# 启动线程t1.start()t2.start()
这次我们声明两个函数, 一个是发送一个是接收
这里直接使用了中文。。不要吐槽我。。
接收一个参数,也就是socket的参数,
收发共用一个套接字。
def 发送(socket_udp): pass
def 接收(socket_udp): pass
main函数做主要控制,并且创建两个进程,实现发送的时候可以同时接收数据。
不要非要发送完毕才接收数据。
大家也可以去掉进程自己改动下代码看看没有多进程是什么样的。
import socketimport threading
def 发送(socket_udp): while True: # 发送数据 date = input("输入要发送的内容:") port = (socket.gethostname(), 7890) socket_udp.sendto(date.encode("utf-8"), port)
def 接收(socket_udp): while True: # 接收数据 rdate, rport = socket_udp.recvfrom(1024) print("来自{}的消息:\n {} \n".format(rport, rdate))
def main(): # 创建套接字 socket_udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定端口 host = (socket.gethostname(), 7890) socket_udp.bind(host)
t1 = threading.Thread(target=接收, args=(socket_udp,)) t2 = threading.Thread(target=发送, args=(socket_udp,)) t1.start() t2.start()
# 关闭套接字 #socket_udp.close()
if __name__ == "__main__": main()