You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python随机生成目的IP与端口时如何实现同IP对应相同端口

随机IP-端口固定映射实现方案

原有代码与问题

原有实现将IP生成、端口生成拆分为两个完全独立的流程,二者没有绑定关系,因此重复抽取到同一IP时,会匹配到独立生成的不同端口,不符合需求。

原随机IP生成函数

import numpy as np
import random

def destinationipv4(no_ips,no_ops):
    list2=[]
    for i in range(0,no_ips):        
        netwrk_id = np.random.choice(range(100,255),replace=True)
        host_id = np.random.choice(range(100,255),replace=True)
        ip_address_gen = f'192.168.{netwrk_id}.{host_id}'
        list2.append(ip_address_gen)
    return list(np.random.choice(list2,size=no_ops, replace=True))

原随机端口生成函数

def dst_port(n):
    list4=[]
    for i in random.sample(range(0, 1200), n):
        list4.append(i)
    return list4 

异常输出示例

Destination IP      Port
192.168.158.102     458 
192.168.158.102     8

调整后实现代码

核心思路:先生成去重的IP池,给每个唯一IP提前分配唯一随机端口建立绑定关系,后续随机抽取IP生成结果时,直接从映射关系中读取对应端口,保证同一IP永远对应同一端口。

import numpy as np
import random

def generate_ip_port_pairs(unique_ip_count, output_count):
    """
    生成指定数量的目的IP-端口对,同一IP固定绑定同一个端口
    :param unique_ip_count: 不重复IP池的总大小
    :param output_count: 最终输出的条目总数(允许IP重复)
    """
    # 生成去重的IP池
    ip_pool = set()
    while len(ip_pool) < unique_ip_count:
        network_id = np.random.choice(range(100,255), replace=True)
        host_id = np.random.choice(range(100,255), replace=True)
        ip = f'192.168.{network_id}.{host_id}'
        ip_pool.add(ip)
    ip_pool = list(ip_pool)

    # 为每个唯一IP分配不重复的随机端口,建立映射
    port_list = random.sample(range(0, 1200), unique_ip_count)
    ip_port_map = dict(zip(ip_pool, port_list))

    # 随机抽取指定数量的IP,匹配预绑定端口生成结果
    selected_ips = list(np.random.choice(ip_pool, size=output_count, replace=True))
    return [(ip, ip_port_map[ip]) for ip in selected_ips]

# 调用示例
if __name__ == "__main__":
    result = generate_ip_port_pairs(unique_ip_count=50, output_count=100)
    print("Destination IP      Port")
    for ip, port in result:
        print(f"{ip:<18}  {port}")

关键逻辑说明

  • 用set结构存储生成的IP自动去重,保证IP池内每个IP唯一,避免同IP重复分配端口
  • 用字典存储IP与端口的一一映射关系,只要IP相同,查询映射返回的端口永远固定
  • 端口通过random.sample生成,保证每个唯一IP分配到的端口不重复,符合常规网络场景的端口使用习惯
  • 最终随机抽取IP生成结果时,无论同一IP被抽中多少次,都直接读取预绑定的端口,完全满足同IP同端口的要求

内容的提问来源于stack exchange,提问作者Gourish Pisal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 12:57:19