"Boost.Asio C ++ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧред" рдЕрдзреНрдпрд╛рдп 7: Boost.Asio - рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╖рдп

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!
рдореИрдВ рдЬреЙрди рдЯреЛрд░рдЬреЛ рдХреА рдкреБрд╕реНрддрдХ Boost.Asio C ++ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реВрдВред

рд╕рд╛рдордЧреНрд░реА:


рдпрд╣ рдЕрдзреНрдпрд╛рдп Boost.Asio рдХреЗ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рд╖рдпреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рд╣рд░ рджрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛:




Asio рдмрдирд╛рдо Boost.Asio


Boost.Asio рд▓реЗрдЦрдХреЛрдВ рдиреЗ рднреА Asio рдХреЛ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХреАред рдЖрдк рдЗрд╕реЗ рдЖрд╕рд┐рдпреЛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЛ рд╕реНрд╡рд╛рджреЛрдВ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЖрд╕рд┐рдпреЛ (рдмреВрд╕реНрдЯ рдирд╣реАрдВ) рдФрд░ рдмреВрд╕реНрдЯ.рдПрд╕рд┐рдпреЛред рд▓реЗрдЦрдХреЛрдВ рдХрд╛ рджрд╛рд╡рд╛ рд╣реИ рдХрд┐ рдЕрдкрдбреЗрдЯ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрд╕рд┐рдпреЛ рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ, рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рдмреВрд╕реНрдЯ рд╡рд┐рддрд░рдг рдореЗрдВ рдЬреЛрдбрд╝реЗ рдЬрд╛рдПрдВрдЧреЗред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдЕрдВрддрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

рдЖрдк рдпрд╣рд╛рдБ рдЖрд╕рд┐рдпреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
рдЖрдкрдХреЛ рдЦреБрдж рддрдп рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЖрдкрдХреЛ рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдкрд╕рдВрдж рд╣реИ; рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ Boost.Asio рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рдЕрдкрдиреА рдкрд╕рдВрдж рдмрдирд╛рддреЗ рд╕рдордп рдХреБрдЫ рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:

рдЖрдк рдПрдХ рдЖрд╡реЗрджрди рдореЗрдВ Asio рдФрд░ Boost.Asio рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЖрдкрдХреЛ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд╢рдВрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВред рдпрд╣ рдЙрджреНрджреЗрд╢реНрдп рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЖрд╕рд┐рдпреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдХреБрдЫ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмреВрд╕реНрдЯ.рдПрд╕рд┐рдпреЛ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдбрд┐рдмрдЧрд┐рдВрдЧ


рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░рдирд╛ рдПрдХ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЖрдорддреМрд░ рдкрд░ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдпрд╣ рдмреНрд▓реЙрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдмрд╕ рдбрд┐рдмрдЧрд┐рдВрдЧ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЬрд╣рд╛рдВ рдпрд╣ рд╣реБрдЖ рд╣реИ рдЙрд╕рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ (рд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдХрд╛ рдорддрд▓рдм рдЕрдиреБрдХреНрд░рдорд┐рдХ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЬрдм рдЖрдк рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдИрд╡реЗрдВрдЯреНрд╕ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдШрдЯрд┐рдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдкрдХрдбрд╝рдирд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЛ рдХреЛрд░рдЯрд╛рдЗрди рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдЬрдм рдпрд╣ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдмрд╛рдд рдЖрддреА рд╣реИ, рддреЛ Boost.Asio рдЖрдкрдХреЛ рдорджрдж рдХреЗ рд▓рд┐рдП рдЙрдзрд╛рд░ рджреЗрдЧрд╛; Boost.Asio рдЖрдкрдХреЛ рд╣реИрдВрдбрд▓рд░ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ BOOST_ASIO_ENABLE_HANDLER_TRACKING рдореИрдХреНрд░реЛ рдХреЛ BOOST_ASIO_ENABLE_HANDLER_TRACKING ред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ Boost.Asio рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдордп, рдПрдХ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдСрдкрд░реЗрд╢рди рдФрд░ рдЗрд╕рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рдорд╛рдкреНрддрд┐ рд╣реИрдВрдбрд▓рд░ рджреНрд╡рд╛рд░рд╛ рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╕реВрдЪрдирд╛ рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред

рд╣реИрдВрдбрд▓рд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА


рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред Boost.Asio рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдирд┐рдореНрди рджреЗрддрд╛ рд╣реИ:

 @asio|<timestamp>|<action>|<description>. 

рдкрд╣рд▓рд╛ рдЯреИрдЧ рд╣рдореЗрд╢рд╛ @asio , рдЖрдк рдЗрд╕реЗ Boost.Asio рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдЕрдиреНрдп рд╕реНрд░реЛрдд рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо ( std::cerr рдмрд░рд╛рдмрд░) рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред timestamp рдЙрджрд╛рд╣рд░рдг 1 рдЬрдирд╡рд░реА, 1970 рдпреВрдЯреАрд╕реА рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╕реЗрдХрдВрдб рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрдХрдВрдб рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ action рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

рдЬрдм рднреА n = 0, рддрдм рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмрд╛рд╣рд░ (рдЕрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рд░реВрдк рд╕реЗ) рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдорддреМрд░ рдкрд░, рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдкрд╣рд▓рд╛ рдСрдкрд░реЗрд╢рди (рдСрдкрд░реЗрд╢рди) рдХрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдЖрдк рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдЯреНрд░рд┐рдЧрд░ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдЖрдкрдХреЛ рд╕рдВрджреЗрд╢реЛрдВ рдХреА рддрд░рд╣ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП !n рдФрд░ ~n , рдЬреЛ рддрдм рд╣реЛрддреЗ рд╣реИрдВ рдЬрдм рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВред рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдлрд╝рдВрдХреНрд╢рди рдиреЗ рдПрдХ рдЕрдкрд╡рд╛рдж рдирд╣реАрдВ рдлреЗрдВрдХрд╛, рдЗрд╕рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рд╣реИрдВрдбрд▓рд░ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддреЗ рд╕рдордп рдЕрдкрд╡рд╛рджреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред рдмрд╛рдж рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдиреЗ рд╢рд╛рдпрдж io_service рдЙрджрд╛рд╣рд░рдг рдХреЛ рдмрд╣реБрдд рдЬрд▓реНрдж рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╕рднреА рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЙрджрд╛рд╣рд░рдг


рдЖрдкрдХреЛ рд╕рд╣рд╛рдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрдзреНрдпрд╛рдп 6 рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддрд╛ рд╣реВрдВред boost/asio.hpp рдЪрд╛рд▓реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд #define рдЬреЛрдбрд╝рдирд╛ boost/asio.hpp :

 #define BOOST_ASIO_ENABLE_HANDLER_TRACKING #include <boost/asio.hpp> ... 

рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓реЙрдЧ рдЗрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкрд╣рд▓реА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рддреЛ рд╣рдо рдХрдВрд╕реЛрд▓ рдХреЛ рдбрдВрдк рднреА рдХрд░реЗрдВрдЧреЗред рдирд┐рд╖реНрдХрд░реНрд╖ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:

 @asio|1355603116.602867|0*1|socket@008D4EF8.async_connect @asio|1355603116.604867|>1|ec=system:0 @asio|1355603116.604867|1*2|socket@008D4EF8.async_send @asio|1355603116.604867|<1| @asio|1355603116.604867|>2|ec=system:0,bytes_transferred=11 @asio|1355603116.604867|2*3|socket@008D4EF8.async_receive @asio|1355603116.604867|<2| @asio|1355603116.605867|>3|ec=system:0,bytes_transferred=9 @asio|1355603116.605867|3*4|io_service@008D4BC8.post @asio|1355603116.605867|<3| @asio|1355603116.605867|>4| John logged in @asio|1355603116.606867|4*5|io_service@008D4BC8.post @asio|1355603116.606867|<4| @asio|1355603116.606867|>5| @asio|1355603116.606867|5*6|socket@008D4EF8.async_send @asio|1355603116.606867|<5| @asio|1355603116.606867|>6|ec=system:0,bytes_transferred=12 @asio|1355603116.606867|6*7|socket@008D4EF8.async_receive @asio|1355603116.606867|<6| @asio|1355603116.606867|>7|ec=system:0,bytes_transferred=14 @asio|1355603116.606867|7*8|io_service@008D4BC8.post @asio|1355603116.607867|<7| @asio|1355603116.607867|>8| John, new client list: John 

рдореБрдЭреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рджреЗрдВ:

рдЗрд╕рдХреА рдЖрджрдд рдкрдбрд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рд╕рдордп рд▓рдЧреЗрдЧрд╛, рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ, рдЖрдк рдЙрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рдЧ рдвреВрдВрдврдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдлрд╝рд╛рдЗрд▓ рдкрд░ рд╣реИрдВрдбрд▓рд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦрдирд╛


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣реИрдВрдбрд▓рд░ рдЯреНрд░реИрдХрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдорд╛рдирдХ рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо ( std::cerr рдмрд░рд╛рдмрд░) рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддреА рд╣реИред рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд╛рди рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред рдХрдВрд╕реЛрд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░рдл, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рд░реАрд╕реЗрдЯ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд┐рдВрдбреЛрдЬ (рдЧреИрд░-рдХрдВрд╕реЛрд▓) рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рддреНрд░реБрдЯрд┐ рд╕реНрдЯреНрд░реАрдо рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЦрд╛рд▓реА рд╣реИред
рдЖрдк рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддреНрд░реБрдЯрд┐ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣:

 some_application 2>err.txt 

рдпрджрд┐ рдЖрдк рдмрд╣реБрдд рдЖрд▓рд╕реА рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЯреБрдХрдбрд╝рд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:

 // for Windows HANDLE h = CreateFile("err.txt", GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL , 0); SetStdHandle(STD_ERROR_HANDLE, h); // for Unix int err_file = open("err.txt", O_WRONLY); dup2(err_file, STDERR_FILENO); 


рдПрд╕рдПрд╕рдПрд▓


Boost.Asio рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдПрд╕рдПрд╕рдПрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЕрдВрджрд░, рд╡рд╣ OpenSSL рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрд╕рдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдУрдкрдирдПрд╕рдПрд╕рдПрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдФрд░ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐, рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, OpenSSL рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрдХ рдЖрд╕рд╛рди рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЬреИрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рд╕рдВрдХрд▓рдХ рдирд╣реАрдВ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдиреЗ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ OpenSSL рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ Boost.Asio рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдРрдб-рдСрди рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ:

Source: https://habr.com/ru/post/In197392/


All Articles