本文整理匯總了Python中socket.NI_NUMERICHOST屬性的典型用法代碼示例。如果您正苦於以下問題:Python socket.NI_NUMERICHOST屬性的具體用法?Python socket.NI_NUMERICHOST怎麽用?Python socket.NI_NUMERICHOST使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類socket
的用法示例。
在下文中一共展示了socket.NI_NUMERICHOST屬性的13個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: _getrealname
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def _getrealname(addr):
"""
Return a 2-tuple of socket IP and port for IPv4 and a 4-tuple of
socket IP, port, flowInfo, and scopeID for IPv6. For IPv6, it
returns the interface portion (the part after the %) as a part of
the IPv6 address, which Python 3.7+ does not include.
@param addr: A 2-tuple for IPv4 information or a 4-tuple for IPv6
information.
"""
if len(addr) == 4:
# IPv6
host = socket.getnameinfo(
addr, socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)[0]
return tuple([host] + list(addr[1:]))
else:
return addr[:2]
示例2: _setRealAddress
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def _setRealAddress(self, address):
"""
Set the resolved address of this L{_BaseBaseClient} and initiate the
connection attempt.
@param address: Depending on whether this is an IPv4 or IPv6 connection
attempt, a 2-tuple of C{(host, port)} or a 4-tuple of C{(host,
port, flow, scope)}. At this point it is a fully resolved address,
and the 'host' portion will always be an IP address, not a DNS
name.
"""
if len(address) == 4:
# IPv6, make sure we have the scopeID associated
hostname = socket.getnameinfo(
address, socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)[0]
self.realAddress = tuple([hostname] + list(address[1:]))
else:
self.realAddress = address
self.doConnect()
示例3: test_serverGetHostOnIPv6ScopeID
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def test_serverGetHostOnIPv6ScopeID(self):
"""
When a connection is accepted over IPv6, the server
L{ITransport.getHost} method returns an L{IPv6Address} giving the
address on which the server accepted the connection, including the scope
identifier.
"""
interface = getLinkLocalIPv6Address()
client = createTestSocket(self, socket.AF_INET6, socket.SOCK_STREAM)
hostAddress = self._serverGetConnectionAddressTest(
client, interface, 'getHost')
peer = client.getpeername()
hostname = socket.getnameinfo(peer, socket.NI_NUMERICHOST)[0]
self.assertEqual(
IPv6Address('TCP', hostname, *peer[1:]), hostAddress)
示例4: test_serverGetPeerOnIPv6
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def test_serverGetPeerOnIPv6(self):
"""
When a connection is accepted over IPv6, the server
L{ITransport.getPeer} method returns an L{IPv6Address} giving the
address on the remote end of the connection.
"""
interface = '::1'
client = createTestSocket(self, socket.AF_INET6, socket.SOCK_STREAM)
peerAddress = self._serverGetConnectionAddressTest(
client, interface, 'getPeer')
peer = client.getsockname()
hostname = socket.getnameinfo(peer, socket.NI_NUMERICHOST)[0]
self.assertEqual(
IPv6Address('TCP', hostname, *peer[1:]), peerAddress)
示例5: test_serverGetPeerOnIPv6ScopeID
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def test_serverGetPeerOnIPv6ScopeID(self):
"""
When a connection is accepted over IPv6, the server
L{ITransport.getPeer} method returns an L{IPv6Address} giving the
address on the remote end of the connection, including the scope
identifier.
"""
interface = getLinkLocalIPv6Address()
client = createTestSocket(self, socket.AF_INET6, socket.SOCK_STREAM)
peerAddress = self._serverGetConnectionAddressTest(
client, interface, 'getPeer')
peer = client.getsockname()
hostname = socket.getnameinfo(peer, socket.NI_NUMERICHOST)[0]
self.assertEqual(
IPv6Address('TCP', hostname, *peer[1:]), peerAddress)
示例6: __init__
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def __init__(self, host, port):
host = socket.gethostbyname(host)
host, port = socket.getnameinfo((host, port), socket.NI_NUMERICHOST)
self.addr = (host, int(port))
self._path = "%s:%s" % (host, port)
self.socket = None
self._create_socket()
示例7: findFreePort
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def findFreePort(interface='127.0.0.1', family=socket.AF_INET,
type=socket.SOCK_STREAM):
"""
Ask the platform to allocate a free port on the specified interface, then
release the socket and return the address which was allocated.
@param interface: The local address to try to bind the port on.
@type interface: C{str}
@param type: The socket type which will use the resulting port.
@return: A two-tuple of address and port, like that returned by
L{socket.getsockname}.
"""
addr = socket.getaddrinfo(interface, 0)[0][4]
probe = socket.socket(family, type)
try:
probe.bind(addr)
if family == socket.AF_INET6:
sockname = probe.getsockname()
hostname = socket.getnameinfo(
sockname, socket.NI_NUMERICHOST | socket.NI_NUMERICSERV)[0]
return (hostname, sockname[1])
else:
return probe.getsockname()
finally:
probe.close()
示例8: test_buildProtocolIPv6Address
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def test_buildProtocolIPv6Address(self):
"""
When a connection is accepted to an IPv6 address, an L{IPv6Address} is
passed to the factory's C{buildProtocol} method giving the peer's
address.
"""
interface = '::1'
client = createTestSocket(self, socket.AF_INET6, socket.SOCK_STREAM)
observedAddress = self._buildProtocolAddressTest(client, interface)
peer = client.getsockname()
hostname = socket.getnameinfo(peer, socket.NI_NUMERICHOST)[0]
self.assertEqual(
IPv6Address('TCP', hostname, peer[1]), observedAddress)
示例9: test_buildProtocolIPv6AddressScopeID
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def test_buildProtocolIPv6AddressScopeID(self):
"""
When a connection is accepted to a link-local IPv6 address, an
L{IPv6Address} is passed to the factory's C{buildProtocol} method
giving the peer's address, including a scope identifier.
"""
interface = getLinkLocalIPv6Address()
client = createTestSocket(self, socket.AF_INET6, socket.SOCK_STREAM)
observedAddress = self._buildProtocolAddressTest(client, interface)
peer = client.getsockname()
hostname = socket.getnameinfo(peer, socket.NI_NUMERICHOST)[0]
self.assertEqual(
IPv6Address('TCP', hostname, *peer[1:]), observedAddress)
示例10: _getnameinfo
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def _getnameinfo(sockaddr, flags=0):
host = sockaddr[0]
port = sockaddr[1]
if len(sockaddr) == 4:
scope = sockaddr[3]
family = socket.AF_INET6
else:
scope = None
family = socket.AF_INET
tuples = _getaddrinfo(host, port, family, socket.SOCK_STREAM,
socket.SOL_TCP, 0)
if len(tuples) > 1:
raise socket.error('sockaddr resolved to multiple addresses')
addr = tuples[0][4][0]
if flags & socket.NI_DGRAM:
pname = 'udp'
else:
pname = 'tcp'
qname = dns.reversename.from_address(addr)
if flags & socket.NI_NUMERICHOST == 0:
try:
answer = _resolver.query(qname, 'PTR')
hostname = answer.rrset[0].target.to_text(True)
except (dns.resolver.NXDOMAIN, dns.resolver.NoAnswer):
if flags & socket.NI_NAMEREQD:
raise socket.gaierror(socket.EAI_NONAME)
hostname = addr
if scope is not None:
hostname += '%' + str(scope)
else:
hostname = addr
if scope is not None:
hostname += '%' + str(scope)
if flags & socket.NI_NUMERICSERV:
service = str(port)
else:
service = socket.getservbyport(port, pname)
return (hostname, service)
示例11: testHost
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def testHost(self):
for address, flags, expected in [
( ("www.python.org", 80), 0, "dinsdale.python.org"),
( ("www.python.org", 80), socket.NI_NUMERICHOST, "82.94.164.162" ),
( ("www.python.org", 80), socket.NI_NAMEREQD, "dinsdale.python.org"),
( ("82.94.164.162", 80), socket.NI_NAMEREQD, "dinsdale.python.org"),
]:
result = socket.getnameinfo(address, flags)
self.failUnlessEqual(result[0], expected)
示例12: _getnameinfo
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def _getnameinfo(sockaddr, flags=0):
host = sockaddr[0]
port = sockaddr[1]
if len(sockaddr) == 4:
scope = sockaddr[3]
family = socket.AF_INET6
else:
scope = None
family = socket.AF_INET
tuples = _getaddrinfo(host, port, family, socket.SOCK_STREAM,
socket.SOL_TCP, 0)
if len(tuples) > 1:
raise socket.error('sockaddr resolved to multiple addresses')
addr = tuples[0][4][0]
if flags & socket.NI_DGRAM:
pname = 'udp'
else:
pname = 'tcp'
qname = thirdparty.dns.reversename.from_address(addr)
if flags & socket.NI_NUMERICHOST == 0:
try:
answer = _resolver.query(qname, 'PTR')
hostname = answer.rrset[0].target.to_text(True)
except (thirdparty.dns.resolver.NXDOMAIN, thirdparty.dns.resolver.NoAnswer):
if flags & socket.NI_NAMEREQD:
raise socket.gaierror(socket.EAI_NONAME)
hostname = addr
if scope is not None:
hostname += '%' + str(scope)
else:
hostname = addr
if scope is not None:
hostname += '%' + str(scope)
if flags & socket.NI_NUMERICSERV:
service = str(port)
else:
service = socket.getservbyport(port, pname)
return (hostname, service)
示例13: testPort
# 需要導入模塊: import socket [as 別名]
# 或者: from socket import NI_NUMERICHOST [as 別名]
def testPort(self):
for address, flags, expected in [
( ("127.0.0.1", 25), 0, "smtp" ),
( ("127.0.0.1", 25), socket.NI_NUMERICSERV, 25 ),
# This portion of the test does not suceed on OS X;
# the above entries probably suffice
# ( ("127.0.0.1", 513), socket.NI_DGRAM, "who" ),
# ( ("127.0.0.1", 513), 0, "login"),
]:
result = socket.getnameinfo(address, flags)
self.failUnlessEqual(result[1], expected)
# This test currently fails due to the recent changes (as of March 2014) at python.org:
# TBD perhaps there are well-known addresses that guarantee stable resolution
# def testHost(self):
# for address, flags, expected in [
# ( ("www.python.org", 80), 0, "dinsdale.python.org"),
# ( ("www.python.org", 80), socket.NI_NUMERICHOST, "82.94.164.162" ),
# ( ("www.python.org", 80), socket.NI_NAMEREQD, "dinsdale.python.org"),
# ( ("82.94.164.162", 80), socket.NI_NAMEREQD, "dinsdale.python.org"),
# ]:
# result = socket.getnameinfo(address, flags)
# self.failUnlessEqual(result[0], expected)