小编Not*_*imo的帖子

PYTHON - 执行10小时后,"[Errorno 105]无可用缓冲区"

我实现了一个代码,以连续的方式将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:]
Run Code Online (Sandbox Code Playgroud)

接收器代码

import select

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

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

笔记:

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

python sockets buffer runtime-error

7
推荐指数
0
解决办法
2066
查看次数

NMAP连续ping

我需要实现一个能够每秒向一定数量的目的地发送ping数据包的代码。问题是我想在1秒窗口内ping尽可能多的目的地。出于这个原因,我在考虑是否有一种方法可以将循环强加到nmap中[我的意思是-cycle nmap参数],这样套接字只能打开一次并在循环ping结束时关闭,这比使用a节省了更多时间“观看nmap”方法!

parameters ping cycle continuous nmap

3
推荐指数
2
解决办法
5061
查看次数

标签 统计

buffer ×1

continuous ×1

cycle ×1

nmap ×1

parameters ×1

ping ×1

python ×1

runtime-error ×1

sockets ×1