计算机网络课程设计子网划分程序实现 设计语言python 写出源代码 基本要求:按所需网络数等分划分子网(输入网络号、子网掩码和所需要的网络数,划分子网),输出表格形式的子网划分方案和二进制划分方法。并判断出是哪一类网络 判断此网络是否为合法网络

时间: 2023-07-16 22:17:24 浏览: 59
以下是Python实现计算机网络课程设计子网划分程序的源代码,其中包括了输入网络号、子网掩码和所需要的网络数,划分子网,并输出表格形式的子网划分方案和二进制划分方法,最后判断出是哪一类网络和此网络是否为合法网络。 ``` import ipaddress # 输入网络号和子网掩码 network_address = input("请输入网络号:") subnet_mask = input("请输入子网掩码:") # 将网络号和子网掩码转换为ipaddress对象 network_address_ip = ipaddress.IPv4Address(network_address) subnet_mask_ip = ipaddress.IPv4Address(subnet_mask) # 判断子网掩码是否合法 if not subnet_mask_ip.is_private: print("输入的子网掩码不合法!") exit() # 输入所需网络数 num_networks = int(input("请输入所需网络数:")) # 计算子网掩码的位数 subnet_mask_bits = bin(int(subnet_mask_ip))[2:].count('1') # 判断要求的网络数是否合法 if num_networks > 2 ** (32 - subnet_mask_bits) - 2: print("所需网络数超出范围!") exit() # 计算每个子网的主机数 num_hosts_per_subnet = 2 ** (32 - subnet_mask_bits) // num_networks # 计算新的子网掩码 new_subnet_mask_bits = 32 - num_hosts_per_subnet.bit_length() new_subnet_mask_ip = ipaddress.IPv4Address((2 ** new_subnet_mask_bits) - 1 << (32 - new_subnet_mask_bits)) # 计算每个子网的网络号和广播地址 subnets = list(new_subnet_mask_ip.subnets(prefixlen_diff=subnet_mask_bits - new_subnet_mask_bits)) networks = [subnet.network_address for subnet in subnets] broadcasts = [subnet.broadcast_address for subnet in subnets] # 输出子网划分方案表格 print("子网编号\t网络号\t\t\t子网掩码\t\t广播地址\t\t主机地址范围") for i in range(num_networks): network_str = str(networks[i]) broadcast_str = str(broadcasts[i]) first_host_str = str(networks[i] + 1) last_host_str = str(broadcasts[i] - 1) print("{0}\t\t{1}\t{2}\t{3}\t{4}-{5}".format(i + 1, network_str, new_subnet_mask_ip, broadcast_str, first_host_str, last_host_str)) # 输出二进制划分方法 print("\n二进制划分方法:") print("网络号:", bin(int(network_address_ip))[2:].zfill(32)) print("子网掩码:", bin(int(subnet_mask_ip))[2:].zfill(32)) print("新的子网掩码:", bin(int(new_subnet_mask_ip))[2:].zfill(32)) ``` 注:本程序仅支持IPv4地址。

相关推荐

最新推荐

recommend-type

计算机网络(物联网)课程设计《智能家居协议设计》,使用socket编程,附规范报告及python源码

计算机网络课程设计(物联网课程设计)《智能家居协议设计》,使用socket编程,python实现,附规范报告及python源码
recommend-type

[Python语言程序设计-第11期] 测验1: Python基本语法元素 (第1周)

2.以下关于Python语言中“缩进”说法正确的是:缩进在程序中长度统一且强制使用 3.以下不属于IPO模型的是:Program 4.字符串是一个字符序列,给字符串s,以下表示s从右侧向左第三个字符的是:s[-3] 5.以下不是Python...
recommend-type

python扫雷游戏设计(课程设计版)

python扫雷游戏,课程设计,一文解决。此报告包含相关代码的解释和源代码,如果有界面要求可以私聊博主。可以帮助部分同学节省一大部分时间,课程设计报告可以直接将这个docx稍微改一下就好。
recommend-type

EduCoder实践课程——Python程序设计入门答案

记:由于疫情暂时返不了校,然后学校大四毕业年级布置了在线实训的任务,我选择了实践课程Python程序设计入门。以前没有学过,可能是之前有过acm经验,感觉Python挺好入门的,把自己学习过程中的代码记录下来,一是...
recommend-type

BP神经网络python简单实现

本文来自于CSDN,介绍了BP神经网络原理以及如何使用Python来实现BP神经网络等相关知识。人工神经网络是一种经典的机器学习模型,随着深度学习的发展神经网络模型日益完善.联想大家熟悉的回归问题,神经网络模型实际...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

2. 通过python绘制y=e-xsin(2πx)图像

可以使用matplotlib库来绘制这个函数的图像。以下是一段示例代码: ```python import numpy as np import matplotlib.pyplot as plt def func(x): return np.exp(-x) * np.sin(2 * np.pi * x) x = np.linspace(0, 5, 500) y = func(x) plt.plot(x, y) plt.xlabel('x') plt.ylabel('y') plt.title('y = e^{-x} sin(2πx)') plt.show() ``` 运行这段
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。