我实现了一个代码,它以连续的方式将ping发送到不同的目标,但是,经过10个小时的执行周期后,我正在使用的套接字会受到某种老化的影响,这会导致应用程序因“[Errorno”而停止105]没有可用的缓冲空间“。我该如何监控并解决这个问题?
仅供参考,一旦打开,我总是使用相同的套接字来发送和接收ping:可以定期更换套接字来解决问题吗?
import socket
icmp = socket.getprotobyname('icmp')
self.socket = socket.socket(socket.AF_INET,socket.SOCK_RAW,icmp)
for target in target_list:
#...
packet = header+data
while packet:
sent = self.socket.sendto(packet,(target, 1))
packet = packet[sent:]
import select
whatReady = select.select([self.socket],[],[])
if whatReady[0] != []:
for skt in whatReady[0]:
#...
(recPacket,addr) = self.socket.recvfrom(self.PACKET_SIZE+64)
注意:
self.socket
与两个模块的对象引用相同。 self.socket
。