pap*_*ika 3 python linux networking network-programming twisted
我正在实现一个服务 - 用Python编写的Twisted框架,在Debian GNU/Linux上运行 - 检查SIP服务器的可用性.为此,我使用OPTIONS方法(SIP协议功能),因为这似乎是一种常见的做法.为了构造正确且符合RFC的头,我需要知道将要建立的连接的源IP地址和源端口.[怎么]可以用Twisted来完成?
这就是我尝试过的:我将protocol.DatagramProtocol子类化,并在startProtocol(self)我使用self.transport.getHost().host和self.transport.getHost().port.后者确实是将要使用的端口,而前者仅产生0.0.0.0.
我想在这一点上,Twisted不会[但是?]知道哪个接口以及将使用哪个源IP地址.Twisted是否提供了可以帮助我解决此问题的工具,还是需要以不同的方式与操作系统(路由)连接?或者我只是self.transport.getHost().host错误使用?
为了完整起见,我回答了我自己的问题:
在尝试确定主机的源IP地址之前,请确保在传输上使用connect().以下摘录显示了协议实现的相关部分:
class FooBarProtocol(protocol.DatagramProtocol):
def startProtocol(self):
self.transport.getHost().host # => 0.0.0.0
self.transport.connect(self.dstHost, self.dstPort)
self.transport.getHost().host # => 192.168.1.102
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4850 次 |
| 最近记录: |