簡體   English   中英

Twisted TCP客戶端中遠程對等方的IP地址和主機名

[英]IP address and hostname of remote peer in Twisted TCP client

編寫使用Twisted Words的Jabber客戶端。 我想知道遠程對等方的IP地址和主機名。 xmlstream.transport.getPeer().host返回主機名,而應返回IP地址( xmlstreamtwisted.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM