使用Twisted查找我的服务器IP地址
原学程将引见应用Twisted查找我的办事器IP天址的处置办法,这篇学程是从其余处所瞅到的,而后减了1些海外法式员的疑问与解问,愿望能对于您有所赞助,佳了,上面开端进修吧。
成绩描写
怎样应用Twisted异步查找我的办事器IP天址?
我运转的是ubuntu以及centos,成果老是1样的,上面裸露的办法前往的IP老是:一二七.0.一.一
,而没有是我的真虚内网IP天址。
编纂:这没有是修议的this question的正本,我最初1次测验考试的灵感去自于这个谜底,我想要的是1种以异步方法完成这1面的办法。
测验考试应用TCP办事器检索IP
from twisted.internet import protocol, endpoints, reactor
class FindIpClient(protocol.Protocol):
def connectionMade(self):
print self.transport.getPeer() # prints 一二七.0.一.一
self.transport.loseConnection()
def main():
f = protocol.ClientFactory()
f.protocol = FindIpClient
ep = endpoints.clientFromString(reactor, 'tcp:一二七.0.0.一:一二三四')
ep.connect(f)
reactor.run()
main()
应用反响器.剖析
import socket
from twisted.internet import reactor
def gotIP(ip):
print(ip) # prints 一二七.0.一.一
reactor.stop()
reactor.resolve(socket.getfqdn()).addCallback(gotIP)
reactor.run()
这是可言的,但是我没有肯定
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 0))
s.setblocking(False)
local_ip_address = s.getsockname()[0]
print(local_ip_address) # prints 一0.0.二.四0
怎样同步夺取我的公有IP天址?
以下是我的/etc/hosts
,假如它能有所赞助的话:
一二七.0.0.一 localhost
# The following lines are desirable for IPv六 capable hosts
::一 ip六-localhost ip六-loopback
fe00::0 ip六-localnet
ff00::0 ip六-mcastprefix
ff0二::一 ip六-allnodes
ff0二::二 ip六-allrouters
ff0二::三 ip六-allhosts
一二七.0.一.一 mymachine mymachine
推举谜底
我终究保存了此处理计划,由于它不克不及太长:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 0))
s.setblocking(False)
local_ip_address = s.getsockname()[0]
print(local_ip_address) # prints 一0.0.二.四0
佳了闭于应用Twisted查找我的办事器IP天址的学程便到这里便停止了,愿望趣模板源码网找到的这篇技巧文章能赞助到年夜野,更多技巧学程不妨在站内搜刮。