8

継続的にさまざまな宛先に ping を送信するコードを実装しましたが、10 時間の実行サイクルの後、使用しているソケットが何らかのエージングの影響を受け、アプリケーションが "[Errorno 105] No利用可能なバッファスペース」。この問題を監視して解決するにはどうすればよいですか?

参考までに、一度開くと、常に同じソケットを使用して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)

ノート:

  1. self.socket両方のモジュールで同じオブジェクト参照です。
  2. 実行中に閉じたり変更したりすることはありませんself.socket
  3. self.PACKET_SIZE = 32 (バイト)
4

0 に答える 0