用python写一个检测局域网内存活主机的代码
时间: 2023-02-23 21:09:49 浏览: 84
可以使用 Python 的网络编程模块 `socket` 来实现检测局域网内存活主机的功能。
下面是一份简单的代码:
```
import socket
def is_up(host):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(1)
try:
s.connect((host, 135))
s.close()
return True
except:
return False
network = '192.168.1.'
for i in range(1,255):
host = network + str(i)
if is_up(host):
print(host + ' is up')
```
这段代码使用了 `socket` 模块来创建一个套接字,并设置了 1 秒的超时。然后使用 `try-except` 语句来捕获可能发生的异常,并进行判断,如果不出现异常,说明该主机是存活的。
这段代码是一份简单的示例,实际的情况可能比较复杂,比如需要考虑防火墙的影响等。
相关问题
有python写一个检测局域网内存活自己的代码
您可以使用 Python 写一个简单的程序来检测局域网内的活动主机。这可以通过使用网络扫描技术来实现。
具体实现方法如下:
1. 获取本机的 IP 地址和子网掩码。
2. 根据 IP 地址和子网掩码确定局域网内的地址范围。
3. 使用 for 循环遍历整个地址范围,并对每个地址执行一个 ping 操作。
4. 若一个主机回复了 ping,则说明该主机是活动的,您可以将其打印出来。
以下是一个示例代码:
```
import os
def ping(host):
response = os.system("ping -c 1 " + host)
if response == 0:
print(host, 'is up!')
else:
print(host, 'is down.')
# 获取本机 IP 地址
hostname = socket.gethostbyname(socket.gethostname())
# 获取子网掩码
subnet = hostname.split(".")[0] + "." + hostname.split(".")[1] + "." + hostname.split(".")[2] + "."
# 遍历整个地址范围
for i in range(1, 255):
host = subnet + str(i)
ping(host)
```
请注意,上述代码仅作为示例,您可能需要根据自己的需求进行修改。
阅读全文