рдкреБрд╕реНрддрдХ тАЬрд▓рд┐рдирдХреНрд╕ рдПрдкреАрдЖрдИред рд╡реНрдпрд╛рдкрдХ рдЧрд╛рдЗрдб"


рдкреБрд╕реНрддрдХ тАЬрд▓рд┐рдирдХреНрд╕ рдПрдкреАрдЖрдИред рд╡реНрдпрд╛рдкрдХ рдЧрд╛рдЗрдб"

рд╢реБрдн рджреЛрдкрд╣рд░ рдореИрдВ рдЖрдкрдХреЗ рдзреНрдпрд╛рди рдореЗрдВ "рд▓рд┐рдирдХреНрд╕ рдПрдкреАрдЖрдИ" рдкреБрд╕реНрддрдХ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВред рдПрдХ рд╡реНрдпрд╛рдкрдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛" (рдкреБрд╕реНрддрдХ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд▓рд┐рдирдХреНрд╕ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЗрдВрдЯрд░рдлрд╝реЗрд╕). рдЗрд╕реЗ рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ рдкрд░ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдкреНрд░рдЪрд╛рд░ рдХреЛрдб рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рд▓рд┐рдирдХреНрд╕рдПрдкреАрдЖрдИ , рдЖрдкрдХреЛ 30% рдХреА рдЫреВрдЯ рдорд┐рд▓реЗрдЧреАред

рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рдкреБрд╕реНрддрдХ рд╕реЗ рдЕрдВрд╢:

рд╕реЙрдХреЗрдЯ: рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░

рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ, рд╣рдо рдкреБрдирд░рд╛рд╡реГрддреНрдд рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рд░реНрд╡рд░ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░реЗрдВрдЧреЗ, рдФрд░ inetd рдирд╛рдордХ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдбреЗрдореЙрди рдкрд░ рднреА рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВрдЧреЗ, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

рдкреБрдирд░рд╛рд╡реГрддреНрддреАрдп рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рд╕рд░реНрд╡рд░

рджреЛ рд╕рд╛рдорд╛рдиреНрдп рд╕реЙрдХреЗрдЯ-рдЖрдзрд╛рд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рд╣реИрдВ:

  • рдкреБрдирд░рд╛рд╡реГрддреНрдд: рд╕рд░реНрд╡рд░ рдПрдХ рд╕рдордп рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реЗрд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдкрд╣рд▓реЗ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдз (рдпрд╛ рдХрдИ рдЕрдиреБрд░реЛрдз) рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдЕрдЧрд▓реЗ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ;

  • рд╕рдорд╛рдирд╛рдВрддрд░: рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд╕рд╛рде рдХрдИ рдХреНрд▓рд╛рдЗрдВрдЯреНрд╕ рдХреЛ рд╕реЗрд╡рд╛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

FIFO рдХрддрд╛рд░реЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╕рд░реНрд╡рд░ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд╣рд▓реЗ рд╣реА рдзрд╛рд░рд╛ 44.8 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдкреБрдирд░рд╛рд╡реГрддреНрдд рд╕рд░реНрд╡рд░ рдЖрдорддреМрд░ рдкрд░ рдХреЗрд╡рд▓ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдХрд╛рдлреА рддреЗрдЬрд╝реА рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рддрдм рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд╛рдордиреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рджреА рдЬрд╛рддреА рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдХреЗ рдмреАрдЪ рдПрдХрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рд╣реИред

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

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

рдкреБрдирд░рд╛рд╡реГрддреНрдд рдпреВрдбреАрдкреА рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐

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

рдЗрдХреЛ рдпреВрдбреАрдкреА рд╕рд░реНрд╡рд░ рд▓рдЧрд╛рддрд╛рд░ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░реЗрд╖рдХ рдХреЛ рдЙрдирдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рд╕рд░реНрд╡рд░ рдХреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдПрдХ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрдЧрд╛ред рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 56.1 рдореЗрдВ рджрд┐рдЦрд╛рдИ рдЧрдИ рд╣реИред

рд╕реВрдЪреА 56.1. рдкреНрд░реЛрдЧреНрд░рд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рд╣реЗрдбрд░ рдлрд╝рд╛рдЗрд▓ id_echo_sv.c рдФрд░ id_echo_cl.c

#include "inet_sockets.h" /* рд╣рдорд╛рд░реЗ рд╕реЙрдХреЗрдЯ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддрд╛ рд╣реИ */
#рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ "tlpi_hdr.h"

#рд╕реЗрд╡рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ "рдЗрдХреЛ" /* рдпреВрдбреАрдкреА рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо */

#BUF_SIZE 500 рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ /* рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдХрд╛ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░
рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ */
______________________________________________________________________________ рд╕реЙрдХреЗрдЯреНрд╕/id_echo.h

рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 56.2 рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмрд╛рддреЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ:

  • рд╕рд░реНрд╡рд░ рдХреЛ рдбреЗрдореЙрди рдореЛрдб рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реЗрдХреНрд╢рди 37.2 рд╕реЗ рдмрдирдбреЗрдорди() рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ;

  • рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЗрдВрдЯрд░рдиреЗрдЯ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдзрд╛рд░рд╛ 55.12 рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ;

  • рдпрджрд┐ рд╕рд░реНрд╡рд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ syslog() рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЙрдЧ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддрд╛ рд╣реИред

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╣рдо рд╕рдВрднрд╡рддрдГ syslog() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рд▓реЙрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдХреБрдЫ рд╕реАрдорд╛ рд▓рдЧрд╛рдПрдВрдЧреЗред рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рд╣рдорд▓рд╛рд╡рд░ рджреНрд╡рд╛рд░рд╛ рд╕рд┐рд╕реНрдЯрдо рд▓реЙрдЧ рдХреЛ рдУрд╡рд░рдлреНрд▓реЛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рди рднреВрд▓реЗрдВ рдХрд┐ syslog() рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХрд╛рдлреА рдорд╣рдВрдЧреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ fsync() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рд╕реВрдЪреА 56.2. Iteration рд╕рд░реНрд╡рд░ рдЬреЛ UDP рдЗрдХреЛ рд╕реЗрд╡рд╛ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддрд╛ рд╣реИ

__________________________________________________________________________ рд╕реЙрдХреЗрдЯ/id_echo_sv.c
#рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛
#рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ "id_echo.h"
#рд╢рд╛рдорд┐рд▓ рд╣реИ "become_daemon.h"

int
рдореБрдЦреНрдп(int argc, char *argv[])
{
рдЗрдВрдЯ рдПрд╕рдПрдлрдбреА;
ssize_t numRead;
socklen_t рд▓реЗрди;
struct sockaddr_storage claddr;
рдЪрд╛рд░ buf[BUF_SIZE];
рдЪрд╛рд░ addrStr[IS_ADDR_STR_LEN];

рдЕрдЧрд░ (рдбреЗрдореЙрди рдмрди рдЧрдпрд╛(0) == -1)
errExit('becomeDaemon');

sfd = inetBind(рд╕реЗрд╡рд╛, SOCK_DGRAM, NULL);
рдЕрдЧрд░ (рдПрд╕рдПрдлрдбреА == -1) {
syslog(LOG_ERR, "рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрд╛ (%s)",
strerror(errno));
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ(EXIT_FAILURE);

/* рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдкреНрд░реЗрд╖рдХреЛрдВ рдХреЛ рдЙрдирдХреА рдкреНрд░рддрд┐рдпрд╛рдВ рд▓реМрдЯрд╛рдПрдВ */
}
рдХреЗ рд▓рд┐рдП (;;) {
рд▓реЗрди = рдЖрдХрд╛рд░(struct sockaddr_storage);
numRead = recvfrom(sfd, buf, BUF_SIZE, 0, (struct sockaddr *) &claddr, &len);

рдпрджрд┐ (numRead == -1)
errExit('recvfrom');
рдпрджрд┐ (sendto(sfd, buf, numRead, 0, (struct sockaddr *) &claddr, len)
!= рд╕рдВрдЦреНрдпрд╛рдкрдврд╝реЗрдВ)
syslog(LOG_WARNING, "%s (%s) рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рддрд┐рдзреНрд╡рдирд┐рдд рдХрд░рдиреЗ рдореЗрдВ рддреНрд░реБрдЯрд┐",
inetAddressStr((struct sockaddr *) &claddr, len,
addrStr, IS_ADDR_STR_LEN),
strerror(errno));
}
}
__________________________________________________________________________ рд╕реЙрдХреЗрдЯ/id_echo_sv.c

рд╕рд░реНрд╡рд░ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд▓рд┐рд╕реНрдЯрд┐рдВрдЧ 56.3 рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдзрд╛рд░рд╛ 55.12 рдореЗрдВ рд╡рд┐рдХрд╕рд┐рдд рдЗрдВрдЯрд░рдиреЗрдЯ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЙрд╕ рдиреЗрдЯрд╡рд░реНрдХ рдиреЛрдб рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рд╕рд░реНрд╡рд░ рд╕реНрдерд┐рдд рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рд▓реВрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╡рд╣ рд╢реЗрд╖ рдкреНрд░рддреНрдпреЗрдХ рддрд░реНрдХ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред

рд╕реВрдЪреА 56.3. рдпреВрдбреАрдкреА рдЗрдХреЛ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЧреНрд░рд╛рд╣рдХ

#рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ "id_echo.h"

int
рдореБрдЦреНрдп(int argc, char *argv[])
{
рдЗрдВрдЯ рдПрд╕рдПрдлрдбреА, рдЬреЗ;
рдЖрдХрд╛рд░_рдЯреА рд▓реЗрди;
ssize_t numRead;
рдЪрд╛рд░ buf[BUF_SIZE];

рдпрджрд┐ (argc < 2 || strcmp(argv[1], "--help") == 0)
useErr('%s рд╣реЛрд╕реНрдЯ рд╕рдВрджреЗрд╢...n', argv[0]);

/* рдкрд╣рд▓реЗ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рддрд░реНрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рд░реНрд╡рд░ рдПрдбреНрд░реЗрд╕ рддреИрдпрд╛рд░ рдХрд░реЗрдВ */
sfd = inetConnect(argv[1], рд╕реЗрд╡рд╛, SOCK_DGRAM);
рдЕрдЧрд░ (рдПрд╕рдПрдлрдбреА == -1)
рдШрд╛рддрдХ ("рд╕рд░реНрд╡рд░ рд╕реЙрдХреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛ рд╕рдХрд╛");

/* рд╢реЗрд╖ рддрд░реНрдХреЛрдВ рдХреЛ рдЕрд▓рдЧ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВ */
(j = 2; j < argc; j++) рдХреЗ рд▓рд┐рдП {
рд▓реЗрди = рд╕реНрдЯреНрд░рд▓реЗрди(argv[j]);
рдпрджрд┐ (рд▓рд┐рдЦреЗрдВ(sfd, argv[j], len) != len)
рдШрд╛рддрдХ ("рдЖрдВрд╢рд┐рдХ/рдЕрд╕рдлрд▓ рд▓реЗрдЦрди");

numRead = рдкрдврд╝реЗрдВ(sfd, buf, BUF_SIZE);
рдпрджрд┐ (numRead == -1)
errExit ("рдкрдврд╝реЗрдВ");
рдкреНрд░рд┐рдВрдЯрдл ("[%ld рдмрд╛рдЗрдЯреНрд╕] %*sn", (рд▓рдВрдмрд╛) numRead, (int) numRead, buf);
}
рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ(EXIT_SUCCESS);
}
__________________________________________________________________________ рд╕реЙрдХреЗрдЯреНрд╕/id_echo_cl.c

рдиреАрдЪреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╕рд░реНрд╡рд░ рдФрд░ рджреЛ рдХреНрд▓рд╛рдЗрдВрдЯ рдЗрдВрд╕реНрдЯреЗрдВрд╕реЗрд╕ рдЪрд▓рд╛рддреЗ рд╕рдордп рд╣рдо рдХреНрдпрд╛ рджреЗрдЦреЗрдВрдЧреЗ:

$su // рдЖрд░рдХреНрд╖рд┐рдд рдкреЛрд░реНрдЯ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рдкрд╛рд╕рд╡рд░реНрдб:
# ./id_echo_sv // рд╕рд░реНрд╡рд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ
# рдмрд╛рд╣рд░ рдирд┐рдХрд▓реЗрдВ // рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЕрдзрд┐рдХрд╛рд░ рдЫреЛрдбрд╝реЗрдВ
$ ./id_echo_cl рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рд╣реИрд▓реЛ рд╡рд░реНрд▓реНрдб // рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рджреЛ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рднреЗрдЬрддрд╛ рд╣реИ
[5 рдмрд╛рдЗрдЯреНрд╕] рд╣реИрд▓реЛ // рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд░реНрд╡рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ
[5 рдмрд╛рдЗрдЯреНрд╕] рджреБрдирд┐рдпрд╛
$ ./id_echo_cl рд▓реЛрдХрд▓рд╣реЛрд╕реНрдЯ рдЕрд▓рд╡рд┐рджрд╛ // рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдХ рдбреЗрдЯрд╛рдЧреНрд░рд╛рдо рднреЗрдЬрддрд╛ рд╣реИ
[7 рдмрд╛рдЗрдЯреНрд╕] рдЕрд▓рд╡рд┐рджрд╛

рдореИрдВ рдЖрдкрдХреЗ рд╕реБрдЦрдж рдкрдврд╝рдиреЗ рдХреА рдХрд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ)

рд╕реНрд░реЛрдд: linux.org.ru