socket.getaddrinfo ()
socket.getaddrinfo ( host, port, family=0, type=0, proto=0, flags=0 )
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ host/port Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° Ρ 5 ΡΠ»Π΅Π½Π°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΠ΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊ ΡΡΠΎΠΉ ΡΠ»ΡΠΆΠ±Π΅. host - ΡΡΠΎ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌΡ, ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° IPv4/v6 ΠΈΠ»ΠΈ None. port - ΡΡΠΎ ΡΡΡΠΎΠΊΠΎΠ²ΠΎΠ΅ ΠΈΠΌΡ ΡΠ»ΡΠΆΠ±Ρ, ΡΠ°ΠΊΠΎΠ΅ ΠΊΠ°ΠΊ 'http', ΡΠΈΡΠ»ΠΎΠ²ΠΎΠΉ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈΠ»ΠΈ None. ΠΠ΅ΡΠ΅Π΄Π°Π² None Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ host ΠΈ port, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ NULL Π² Π±Π°Π·ΠΎΠ²ΡΠΉ API C.
ΠΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° family, ΡΠΈΠΏΠ° type ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠ° proto ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠ°Π·Π°Π½Ρ, ΡΡΠΎΠ±Ρ ΡΡΠ·ΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π°Π΄ΡΠ΅ΡΠΎΠ². ΠΠ΅ΡΠ΅Π΄Π°ΡΠ° Π½ΡΠ»Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΡΡΠΈΡ
Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠ»Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΡΠ³ΡΠΌΠ΅Π½Ρ flags ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ AI_* ΠΈ Π±ΡΠ΄Π΅Ρ Π²Π»ΠΈΡΡΡ Π½Π° ΡΠΏΠΎΡΠΎΠ± Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ². ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, AI_NUMERICHOST ΠΎΡΠΊΠ»ΡΡΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΈ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, Π΅ΡΠ»ΠΈ host ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
Π€ΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠ· ΠΊΠΎΡΡΠ΅ΠΆΠ° Ρ 5 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ:
(family, type, proto, canonname, sockaddr)
Π ΡΡΠΈΡ
ΠΊΠΎΡΡΠ΅ΠΆΠ°Ρ
family, type, proto ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ socket (). canonname Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ Ρ
ΠΎΡΡΠ° host, Π΅ΡΠ»ΠΈ AI_CANONNAME ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° flags; ΠΈΠ½Π°ΡΠ΅ canonname Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ. sockaddr - ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΆ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠΎΡΠΌΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° family (ΠΊΠΎΡΡΠ΅ΠΆ Ρ 2 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (address, port) Π΄Π»Ρ AF_INET, ΠΊΠΎΡΡΠ΅ΠΆ Ρ 4 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (address, port, flowinfo, scope_id) Π΄Π»Ρ AF_INET6) ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄ socket.connect ().
ΠΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ Π°ΡΠ΄ΠΈΡΠ° socket.getaddrinfo Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ host, port, family, type, protocol.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ example.org ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ 80 (ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ IPv6 Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½):
>>> socket.getaddrinfo("example.org", 80, proto=socket.IPPROTO_TCP)
[(<AddressFamily.AF_INET6: 10>, <SocketType.SOCK_STREAM: 1>,
6, '', ('2606:2800:220:1:248:1893:25c8:1946', 80, 0, 0)),
(<AddressFamily.AF_INET: 2>, <SocketType.SOCK_STREAM: 1>,
6, '', ('93.184.216.34', 80))]ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 3.2: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 3.7: Π΄Π»Ρ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΠ»ΠΊΠΈ IPv6 ΡΡΡΠΎΠΊΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π°Π΄ΡΠ΅Ρ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ %scope_id ΡΠ°ΡΡΡ.
Last updated
Was this helpful?