[英]IP address and hostname of remote peer in Twisted TCP client
編寫使用Twisted Words的Jabber客戶端。 我想知道遠程對等方的IP地址和主機名。 xmlstream.transport.getPeer().host
返回主機名,而應返回IP地址( xmlstream
是twisted.words.protocols.jabber.xmlstream.XmlStream
的實例)。
更新:是的,我的Twisted在Ubuntu Hardy軟件包中已經過時了:
$ python -c "import twisted; print twisted.__version__"
2.5.0
您在3年前Twisted 8.2.0中遇到了一個錯誤修復 。 您應該升級到Twisted的最新版本。 (我建議最近發布Twisted 11.0的預發布版本 ;現在是測試的好時機!)如果您在Twisted的最新版本中發現了該錯誤,則應重新打開該錯誤,並說明如何重現它!
如果您需要支持正在使用的任何較舊版本的Twisted,而不是socket
(這是ITransport
實現的意外公開的實現細節),則應使用getHandle
,至少這是有記載的公開方法依賴於實現的東西,像這樣:
self.xmlstream.transport.getHandle().getpeername()
請注意,這不適用於某些反應堆,尤其是IOCP反應堆,該反應堆使用BSD套接字以外的其他東西進行網絡通信。
(讓·保羅已經在評論中指出了其中的大部分內容,但我認為這應該作為答案。)
好吧,我會回答我自己的問題。 不得不去底層套接字獲取IP地址:
ip, port = self.xmlstream.transport.socket.getpeername()
它的 可能的 一個錯誤的Twisted TCP客戶端,其getPeer無法正常工作。
我使用getPeer()獲取主機名。 是的,這很糟糕-我依靠的是舊的越野車性能。 請賜教-新版Twisted如何正確處理?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.