python-我应该在发送udp数据后处理套接字吗?
我有一个监听事件的方法,每次事件发生时,它都应该将数据发送到套接字(它的udp,所以我不检查是否收到了数据) 我在事件处理程序中拥有以下内容:python-我应该在发送udp数据后处理套接字吗?,python,sockets,network-programming,udp,python-sockets,Python,Sockets,Network Programming,Udp,Python Sockets,我有一个监听事件的方法,每次事件发生时,它都应该将数据发送到套接字(它的udp,所以我不检查是否收到了数据) 我在事件处理程序中拥有以下内容: socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) socket.sendto(data, (IP, PORT)) 在我看来,每次调用事件时,我都需要创建一个新的套接字,因为我不知道两个事件之间会经过多少时间,因此使用全局套接字变量并发送事件的数据并不保证套接字仍处于运行状
socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket.sendto(data, (IP, PORT))
在我看来,每次调用事件时,我都需要创建一个新的套接字,因为我不知道两个事件之间会经过多少时间,因此使用全局套接字变量并发送事件的数据并不保证套接字仍处于运行状态
问题是,因为我每次都创建套接字,所以我应该在发送数据后处理/关闭它吗?使用后处理或关闭插座的最佳方法是什么
在我看来,每次调用事件时,我都需要创建一个新套接字
不,可以重复使用以前的套接字。请记住,UDP套接字是无连接的,因此您对断开连接的担心并不适用
问题是,因为我每次都创建套接字,所以我应该在发送数据后处理/关闭它吗
是的,如果您要创建无数个套接字,请边创建边关闭它们。否则,您将用完文件描述符插槽,这是进程中的有限资源
在我看来,每次调用事件时,我都需要创建一个新套接字
不,可以重复使用以前的套接字。请记住,UDP套接字是无连接的,因此您对断开连接的担心并不适用
问题是,因为我每次都创建套接字,所以我应该在发送数据后处理/关闭它吗
是的,如果您要创建无数个套接字,请边创建边关闭它们。否则,进程中的有限资源文件描述符插槽将用完。正如Rob所解释的,您不必每次都创建一个新套接字 根据文件(): 套接字在被垃圾收集时会自动关闭,但是 建议显式关闭()它们,或使用 他们周围的声明 因此,如果每次都选择创建/关闭,可以执行以下操作:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as socket:
socket.sendto(data, (IP, PORT))
正如Rob已经解释的,您不一定每次都需要创建一个新的套接字 根据文件(): 套接字在被垃圾收集时会自动关闭,但是 建议显式关闭()它们,或使用 他们周围的声明 因此,如果每次都选择创建/关闭,可以执行以下操作:
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as socket:
socket.sendto(data, (IP, PORT))
你说的“插座还开着”是什么意思?插座没有“向上”或“向下”状态。你说的“插座仍在向上”是什么意思?插座没有“向上”或“向下”状态。