рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ рдХрд╣рддреЗ рд╣реИрдВ

рдЫрд╡рд┐

рдмрд░реНрдХрд▓реЗ рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╕реЗ рд╕реЙрдХреЗрдЯ рдореЙрдбрд▓, рдЬреЛ рдХрдИ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрддрд░ рдкрд░ рд╕рдВрдЧрдд рд╣реИрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдЗрддрдирд╛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдирд╣реАрдВ рд╣реИред



рдЖрдЗрдП рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдХреБрдЫ рдореБрд╢реНрдХрд┐рд▓ рдЕрдВрддрд░реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ, рдЬреЛ рдХрд┐ рдПрдХ рдУрдПрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рджреВрд╕рд░реЗ рдУрдПрд╕ рдореЗрдВ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдХреЙрд▓ рдХреЛ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдЖрд░рдкреАрд╕реА рд▓рд┐рдЦрддреЗ рд╕рдордп рдкрд╛рдП рдЧрдП рдереЗред





рд╕реЙрдХреЗрдЯ рдкреНрд░рдХрд╛рд░



рдЬрдм рддрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреА рдХреНрд╖рдорддрд╛ 32 рдмрд┐рдЯреНрд╕ рд╣реЛрддреА рд╣реИ, рддрдм рддрдХ рдЗрдВрдЯрд░рдЪреЗрдВрдЬ рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рд╡рд┐рдВрдбреЛрдЬ рдореЗрдВ 64 рдмрд┐рдЯреНрд╕ рдкрд░, SOCKET рдкреНрд░рдХрд╛рд░ рдЖрдХрд╛рд░ рдореЗрдВ 2 рдЧреБрдирд╛ рдмрдбрд╝рд╛ рд╣реИред



рдмреАрдПрд╕рдбреА рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдПрдХ рд╕рд╛рде рд╕реЙрдХреЗрдЯ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рджреЛрдиреЛрдВ рдХреЗ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬреИрд╕реЗ "рд╢рд╛рдпрдж рд╣реА рдХрднреА" рдХреЙрд▓ рдЬреИрд╕реЗ рдХрд░реАрдмреА (), fcntl () рдФрд░ ioctl ())ред

рдПрдХ рд╕рд╛рдЗрдб рдЗрдлрд╝реЗрдХреНрдЯ рднреА рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓ рд╡рд┐рдХрдЯ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдмрд░реНрдХрд▓реЗ рдореЙрдбрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдЫреЛрдЯреА рд╕рдВрдЦреНрдпрд╛ (100 рд╕реЗ рдХрдо) рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рдЧрдП рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ 1. рднрд┐рдиреНрди рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред Microsoft рдореЙрдбрд▓ рдореЗрдВ, рдРрд╕рд╛ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рддреБрд░рдВрдд 200 рд╕реЗ рдЕрдзрд┐рдХ (рд▓рдЧрднрдЧ), рдФрд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рдЖрдХрд╛рд░ (рд╕реЙрдХреЗрдЯ) рджреНрд╡рд╛рд░рд╛ рднрд┐рдиреНрди рд╣реЛрддреЗ рд╣реИрдВред





рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐



Errno рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИрдВред





рд╕реЙрдХреЗрдЯреНрд╕ рдмрдирд╛рдирд╛:



рд╕реЙрдХреЗрдЯ (рдЗрдВрдЯ рдЕрдл, рдЗрдВрдЯ рдкреНрд░рдХрд╛рд░, рдЗрдВрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓);



рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдмреАрдПрд╕рдбреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИред рджреВрд╕рд░реЗ рдХреЗ рд▓рд┐рдП, рд╡реЗ рдЕрднреА рднреА рд╕рдорд╛рди рд╣реИрдВред





рд╕реЙрдХреЗрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ



рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдмреАрдПрд╕рдбреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИред





рд╕реЙрдХреЗрдЯреНрд╕ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ 2



рдПрдХрдорд╛рддреНрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдореИрдкрд┐рдВрдЧ: fcntl (рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, F_SETFL, O_NONBLOCK) -> ioctlsocket (рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, FIONBIO, рдорд╛рди O_NBLBLOCK рдХреЗ рд╕рд╛рде рдЪрд░ рдХрд╛ рдкрддрд╛)ред рдЭрдВрдбреЗ рдХреЗ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╕рдордЭрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡реЗ рдмреАрдПрд╕рдбреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдЕрд▓рдЧ рд╣реИрдВ)ред

рдЙрд╕реА рд╕рдордп, fcntl (рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░, F_GETFL) рдЬреИрд╕реА рдХреНрд╡реЗрд░реА 0 рдпрд╛ O_RRWR рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИред





рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рд╕реЙрдХреЗрдЯ 3



рдкрд╣рд▓реЗ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде ioctl () рдХреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЕрднреА рддрдХ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИред





рдбреАрдПрдирдПрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ



getaddrinfo (рдЪрд╛рд░ рдХрд╛рдВрд╕реНрдЯ * рдиреЛрдб, рдЪрд╛рд░ рдХрд╛рдВрд╕реНрдЯ * рд╕рд░реНрд╡рд┐рд╕, рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдПрдбреНрд░реАрдиреЛ рдХреЙрдиреНрд╕ * рд╕рдВрдХреЗрдд, рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдПрдбреНрд░реАрдиреЛ ** рдмреНрд▓рд░)



рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВред ai_addr рдФрд░ ai_canonname рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрдлрд╕реЗрдЯ рд╣реИрдВред рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рд╕реНрд╡реИрдк рдХрд┐рдпрд╛ (рдорд┐рд╢реНрд░рд┐рдд рдХрд┐рдпрд╛?)ред





рдбреЗрдЯрд╛ рдЕрдЧреНрд░реЗрд╖рдг



рдЪреМрдереЗ рддрд░реНрдХ рдХреЗ рдЭрдВрдбреЗ рдмреАрдПрд╕рдбреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдЕрд░реНрде рд╣реИрдВред





рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ



рдкреЛрд▓рдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдмреАрдПрд╕рдбреА рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдореВрд▓реНрдп рд╣реИред WSAPoll () рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬ 6 рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг (рд╡рд┐рд╕реНрдЯрд╛) рдФрд░ рдмрд╛рдж рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИред





рд╕рдВрдЪрд╛рд▓рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдореЗрдВ реи



рдЪрдпрди рдореЗрдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм fd_set рд╕рдВрд░рдЪрдирд╛ рдореИрдк рдХреА рдЬрд╛рддреА рд╣реИред рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдХреИрд╕реЗ () рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдХреЙрд▓ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рддреАрди рд╕реЗрдЯреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ: рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдкрдврд╝рдиреЗ, рд▓рд┐рдЦрдиреЗ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдПред рдЖрдк рдореИрдХреНрд░реЛ FD_SET (рд╕реЙрдХреЗрдЯ, рд╕реЗрдЯ) рджреНрд╡рд╛рд░рд╛ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рд╕реЗрдЯ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реЙрдХреЗрдЯ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдерд┐рд░рддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - FD_ISSET (рд╕реЙрдХреЗрдЯ, рд╕реЗрдЯ), рд╕реЗрдЯ рд╕реЗ рдПрдХ рд╕реЙрдХреЗрдЯ рд╣рдЯрд╛рдПрдВ - FD_CLR (рд╕реЙрдХреЗрдЯ, рд╕реЗрдЯ), рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдПрдВ - FD_ZERO (рд╕реЗрдЯ) ред рдХреЙрд▓ рдХреЗ рдмрд╛рдж, рдЪрдпрди () рдЗрд╕реА рд╕реЗрдЯ рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдХреЗрд╡рд▓ рдЙрди рд╕реЙрдХреЗрдЯреНрд╕, рдЬреЛ рдЕрдВрддрд┐рдо рддрд░реНрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯ рдХреЗ рджреМрд░рд╛рди, рдЕрдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВред



рдПрдХ рдмреАрдПрд╕рдбреА рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЙрдХреЗрдЯ рдХреЛ рдПрдХ рд╕реЗрдЯ рдореЗрдВ рдбрд╛рд▓рдиреЗ рд╕реЗ рдЕрдВрддрд┐рдо рдмрд┐рдЯ рдореЗрдВ рд▓рдВрдбрд┐рдВрдЧ рд╣реЛрддреА рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдЙрд╕рдХрд╛ рд╕реАрд░рд┐рдпрд▓ рдирдВрдмрд░ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рд╡рд┐рд╡рд░рдгрдХрд░реНрддрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрддрд╛ рд╣реИред FD_SETSIZE рдЖрдорддреМрд░ рдкрд░ 1024 рд╣реИред рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рддрд░реНрдХ () рддреАрди рд╕реЗрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ рд╕реЙрдХреЗрдЯ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд╛ рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдорд╛рди рд╣реИред рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ fds_bits рд╕рд░рдгреА рдореЗрдВ рдереЛрдбрд╝реА рд╕реА рд╕реЗрдЯрд┐рдВрдЧ рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реАрдорд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд┐рдП рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реЙрдХреЗрдЯ рд╡рд┐рд╡рд░рдгрдХ рдореВрд▓реНрдп> = FD_SETSIZE рдХреЗ рд╕рд╛рде, рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдпрди рдХреЗ рдХреБрдЫ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрдВрдЬреВрд╕ рдХрдВрдкреНрдпреВрдЯрд░ рдХрд╛ рдПрдХ рдЕрд╡рд╢реЗрд╖ рд╣реИред рд╡реИрд╕реЗ, рдпрд╣рд╛рдБ рдХрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ int -> SOCKET рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрд╛рдВрддрд░рдг рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред



рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕реЗрдЯ рдореЗрдВ рдПрдХ рд╕реЙрдХреЗрдЯ рдбрд╛рд▓рдХрд░ fd_cray рдПрд░реЗ рдореЗрдВ fd_count рдЗрдВрдбреЗрдХреНрд╕ рдореЗрдВ рдбрд╛рд▓рдирд╛ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдмрдврд╝рд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред FD_SETSIZE рдЖрдорддреМрд░ рдкрд░ 64 рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкрд╣рд▓реЗ рддрд░реНрдХ () рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред



All Articles