PYTHON - 执行10小时后,“[Errno 105]没有可用缓冲区空间”

时间:2013-06-12 09:02:56

标签: python sockets buffer runtime-error

我实现了一个代码,它以连续的方式将ping发送到不同的目标,但是,经过10个小时的执行周期后,我正在使用的套接字会受到某种老化的影响,这会导致应用程序因“[Errorno”而停止105]没有可用的缓冲空间“。我该如何监控并解决这个问题?

仅供参考,一旦打开,我总是使用相同的套接字来发送和接收ping:可以定期更换套接字来解决问题吗?

SENDER CODE

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:]

RECEIVER CODE

import select

whatReady = select.select([self.socket],[],[])

if whatReady[0] != []:
        for skt in whatReady[0]:
        #...
        (recPacket,addr) = self.socket.recvfrom(self.PACKET_SIZE+64)

注意:

  1. self.socket与两个模块的对象引用相同。
  2. 我从未在执行期间关闭或更改self.socket
  3. self.PACKET_SIZE = 32(字节)

0 个答案:

没有答案