socket.getaddrinfo ()
Last updated
Was this helpful?
Last updated
Was this helpful?
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ 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 ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π»ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΡΡΠ½ΠΊΡΠΈΡ . canonname Π±ΡΠ΄Π΅Ρ ΡΡΡΠΎΠΊΠΎΠΉ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ΅ΠΉ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠΌΡ Ρ
ΠΎΡΡΠ° host, Π΅ΡΠ»ΠΈ AI_CANONNAME
ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° flags; ΠΈΠ½Π°ΡΠ΅ canonname Π±ΡΠ΄Π΅Ρ ΠΏΡΡΡΡΠΌ. sockaddr - ΡΡΠΎ ΠΊΠΎΡΡΠ΅ΠΆ, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΉ Π°Π΄ΡΠ΅Ρ ΡΠΎΠΊΠ΅ΡΠ°, ΡΠΎΡΠΌΠ°Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° family (ΠΊΠΎΡΡΠ΅ΠΆ Ρ 2 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (address, port)
Π΄Π»Ρ , ΠΊΠΎΡΡΠ΅ΠΆ Ρ 4 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ (address, port, flowinfo, scope_id)
Π΄Π»Ρ ) ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π² ΠΌΠ΅ΡΠΎΠ΄ .
ΠΡΠ·ΡΠ²Π°Π΅Ρ ΡΠΎΠ±ΡΡΠΈΠ΅ Π°ΡΠ΄ΠΈΡΠ° socket.getaddrinfo
Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ host, port, family, type, protocol.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅ΡΡΡ Π°Π΄ΡΠ΅ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π³ΠΈΠΏΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ TCP-ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ example.org
ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ 80 (ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π΅ΡΠ»ΠΈ IPv6 Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½):
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 3.2: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π² Π²Π΅ΡΡΠΈΠΈ 3.7: Π΄Π»Ρ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΌΠ½ΠΎΠ³ΠΎΠ°Π΄ΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΡΠ»ΠΊΠΈ IPv6 ΡΡΡΠΎΠΊΠ°, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠ°Ρ Π°Π΄ΡΠ΅Ρ, Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ %scope_id
ΡΠ°ΡΡΡ.