使用Python发现Web服务

1 投票
2 回答
3153 浏览
提问于 2025-04-15 20:31

我在一个网络上有几个设备。我想用一个库来发现这些设备的存在和身份,使用的是Python脚本,这些设备都有一个网络服务。我的问题是,有没有其他模块可以帮助我解决这个问题,因为我找到的唯一一个模块是Python的ws-discovery?

如果这是唯一的模块,有人能提供一个使用ws-discovery的Python脚本示例吗?

谢谢大家的帮助。

2 个回答

1

你是不是非得用ws-discovery?如果不是的话,可以考虑一下Bonjour协议,也叫做ZeroConf和DNS-SD。这个协议的应用还挺广泛的。我自己没有用过Python来做广告或发现,但有一个项目实现了相关的API:http://code.google.com/p/pybonjour/

正如我所说,我对这个项目没有直接的经验,只是把它作为ws-discovery的一个替代方案提出来。

1

很遗憾,我自己从来没有用过ws-discovery,但似乎有一个Python项目实现了这个功能:

https://pypi.org/project/WSDiscovery/

在他们的文档中,有一个简单的例子教你怎么使用它:

wsd = WSDiscovery()
wsd.start()

ttype = QName("abc", "def")

ttype1 = QName("namespace", "myTestService")
scope1 = Scope("http://myscope")
ttype2 = QName("namespace", "myOtherTestService_type1")
scope2 = Scope("http://other_scope")

xAddr = "localhost:8080/abc"
wsd.publishService(types=[ttype], scopes=[scope2], xAddrs=[xAddr])

ret = wsd.searchServices()

for service in ret:
    print service.getEPR() + ":" + service.getXAddrs()[0]

wsd.stop()

撰写回答