PCip改变后对socket的影响

如果已经建立的socket,如果改变了PC的IP,则socket不受影响,前提是用localaddr.sin_addr.s_addr = INADDR_ANY;

但是PC改变IP后,此socket加入的组播需要重新加入:所以重新建立socket,重新加入组播

 2. bind端口之前,设置socket选项REUSEADDR,支持一个端口绑定多个socket。原因是一个端口close之后,并没有立刻释放干净,会进入TIME_WAIT阶段,通常完全释放需要2分钟

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用华为ensp软件的示例代码,可以模拟7台交换机、36台PC和2台路由器的实际配置。 ``` //创建7个交换机 for (int i = 1; i <= 7; i++) { String switchName = "Switch_" + i; String switchId = i + ""; String switchIp = "192.168.1." + i; String switchMac = "00e0-fc01-000" + i; String vlanId = i + ""; String vlanDesc = "VLAN " + i; //创建交换机 emu.addDevice(switchName, "huawei", "CE6855-48S6Q-HI", switchId); //配置交换机基本信息 emu.configDevice(switchName, "sysname " + switchName); emu.configDevice(switchName, "interface vlanif " + vlanId); emu.configDevice(switchName, "ip address " + switchIp + " 255.255.255.0"); emu.configDevice(switchName, "description " + vlanDesc); emu.configDevice(switchName, "quit"); //配置交换机端口 for (int j = 1; j <= 24; j++) { String portName = "Ethernet0/" + j; String portId = "0/" + j; emu.configDevice(switchName, "interface " + portName); emu.configDevice(switchName, "port link-type access"); emu.configDevice(switchName, "port default vlan " + vlanId); emu.configDevice(switchName, "shutdown"); emu.configDevice(switchName, "undo shutdown"); emu.configDevice(switchName, "quit"); } //配置交换机MAC地址 emu.configDevice(switchName, "mac-address " + switchMac); } //创建36台PC for (int i = 1; i <= 36; i++) { String pcName = "PC_" + i; String pcId = i + ""; String pcIp = "192.168.1." + (i + 7); String pcMac = "00e0-fc01-100" + i; String pcGateway = "192.168.1.1"; //创建PC emu.addDevice(pcName, "huawei", "PC", pcId); //配置PC基本信息 emu.configDevice(pcName, "ip address " + pcIp + " 255.255.255.0"); emu.configDevice(pcName, "mac-address " + pcMac); emu.configDevice(pcName, "gateway " + pcGateway); } //创建2台路由器 for (int i = 1; i <= 2; i++) { String routerName = "Router_" + i; String routerId = i + ""; String routerIp = (i == 1 ? "192.168.1.254" : "10.0.0.1"); String routerMac = (i == 1 ? "00e0-fc01-000a" : "00e0-fc01-000b"); String routerSubnetMask = (i == 1 ? "255.255.255.0" : "255.0.0.0"); String routerGateway = (i == 1 ? "192.168.1.1" : "10.0.0.254"); //创建路由器 emu.addDevice(routerName, "huawei", "NE20E-S2E", routerId); //配置路由器基本信息 emu.configDevice(routerName, "sysname " + routerName); emu.configDevice(routerName, "interface GigabitEthernet0/0/0"); emu.configDevice(routerName, "ip address " + routerIp + " " + routerSubnetMask); emu.configDevice(routerName, "mac-address " + routerMac); emu.configDevice(routerName, "quit"); emu.configDevice(routerName, "interface GigabitEthernet0/0/1"); emu.configDevice(routerName, "ip address " + routerGateway + " " + routerSubnetMask); emu.configDevice(routerName, "mac-address " + routerMac); emu.configDevice(routerName, "quit"); emu.configDevice(routerName, "ip route-static 0.0.0.0 0.0.0.0 " + routerGateway); } //连接PC和交换机 for (int i = 1; i <= 36; i++) { String pcName = "PC_" + i; String switchName = "Switch_" + ((i % 7) + 1); String portName = "Ethernet0/" + ((i % 24) + 1); emu.connectDevices(pcName, "Ethernet0", switchName, portName); } //连接路由器和交换机 emu.connectDevices("Router_1", "GigabitEthernet0/0/0", "Switch_1", "Ethernet0/24"); emu.connectDevices("Router_2", "GigabitEthernet0/0/0", "Switch_7", "Ethernet0/24"); ``` 这段代码创建了7个交换机、36个PC和2个路由器,并将它们连接在一起。您可以根据需要调整IP地址、子网掩码、MAC地址和端口号等配置参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值