ืกืคืจ "ืœื™ื ื•ืงืก ืึทืคึผื™. ืคื•ืœืฉื˜ืขื ื“ื™ืง ืคื™ืจืขืจ"


ืกืคืจ "ืœื™ื ื•ืงืก ืึทืคึผื™. ืคื•ืœืฉื˜ืขื ื“ื™ืง ืคื™ืจืขืจ"

ื ื’ื•ื˜ืŸ ืžื™ื˜ืื’ ืื™ืš ืคืึธืจืฉื˜ืขืœืŸ ืฆื• ื“ื™ื™ืŸ ื•ืคืžืขืจืงื–ืึทืžืงื™ื™ึทื˜ ื“ืขื ื‘ื•ืš "ืœื™ื ื•ืงืก ืึทืคึผื™. ื ืคื•ืœืฉื˜ืขื ื“ื™ืงืขืจ ืคื™ืจืขืจ" (ืื™ื‘ืขืจื–ืขืฆื•ื ื’ ืคื•ืŸ ื“ืขื ื‘ื•ืš ื“ื™ ืœื™ื ื•ืงืก ืคึผืจืึธื’ืจืึทืžืžื™ื ื’ ืฆื•ื‘ื™ื ื“). ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืึธืจื“ืขืจื“ ืื•ื™ืฃ ื“ื™ ื•ื•ืขื‘ื–ื™ื™ื˜ืœ ืคื•ืŸ ื“ื™ ืึทืจื•ื™ืกื’ืขื‘ืขืจ, ืื•ืŸ ืื•ื™ื‘ ืื™ืจ ืฆื•ืœื™ื™ื’ืŸ ื“ื™ ืคึผืขืจืžืึธื•ืฉืึทื ืึทืœ ืงืึธื“ LinuxAPI , ืื™ืจ ื•ื•ืขื˜ ื‘ืึทืงื•ืžืขืŸ ืึท 30% ืึทืจืึธืคึผืจืขื›ืขื ืขืŸ.

ืขืงืกื˜ืจืึทืงื˜ ืคื•ืŸ ื“ืขื ื‘ื•ืš ืคึฟืึทืจ ืจืขืคึฟืขืจืขื ืฅ:

ืกืึธืงืงืขืฅ: ืกืขืจื•ื•ื™ืจืขืจ ืึทืจื˜ืฉื™ื˜ืขืงื˜ื•ืจืข

ืื™ืŸ ื“ืขื ืงืึทืคึผื™ื˜ืœ, ืžื™ืจ ื•ื•ืขืœืŸ ื“ื™ืกืงื•ื˜ื™ืจืŸ ื“ื™ ื‘ืึทืกื™ืงืก ืคื•ืŸ ื“ื™ื–ื™ื™ื ื™ื ื’ ื™ื˜ืขืจืึทื˜ื™ื•ื•ืข ืื•ืŸ ืคึผืึทืจืึทืœืขืœ ืกืขืจื•ื•ืขืจืก, ืื•ืŸ ืื•ื™ืš ืงื•ืง ืื™ืŸ ืึท ืกืคึผืขืฆื™ืขืœ ื“ืขืžืึธืŸ ื’ืขืจื•ืคืŸ inetd, ื•ื•ืึธืก ืžืื›ื˜ ืขืก ื’ืจื™ื ื’ืขืจ ืฆื• ืฉืึทืคึฟืŸ ืื™ื ื˜ืขืจื ืขื˜ ืกืขืจื•ื•ืขืจ ืึทืคึผืœืึทืงื™ื™ืฉืึทื ื–.

ื™ื˜ืขืจืึทื˜ื™ื•ื• ืื•ืŸ ืคึผืึทืจืึทืœืขืœ ืกืขืจื•ื•ืขืจืก

ืขืก ื–ืขื ืขืŸ ืฆื•ื•ื™ื™ ืคึผืจืึธืกื˜ ื›ืึธืœืขืœ-ื‘ืื–ื™ืจื˜ ื ืขืฅ ืกืขืจื•ื•ืขืจ ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจื–:

  • ื™ื˜ืขืจืึทื˜ื™ื•ื•: ื“ืขืจ ืกืขืจื•ื•ืขืจ ื‘ืื“ื™ื ื˜ ืงืœื™ื™ืึทื ืฅ ืื™ื™ื ืขืจ ืื™ืŸ ืึท ืฆื™ื™ึทื˜, ืขืจืฉื˜ืขืจ ืคึผืจืึทืกืขืกื™ื ื’ ืึท ื‘ืงืฉื” (ืึธื“ืขืจ ืขื˜ืœืขื›ืข ืจื™ืงื•ื•ืขืก) ืคื•ืŸ ืื™ื™ืŸ ืงืœื™ืขื ื˜ ืื•ืŸ ื“ืขืžืึธืœื˜ ืžืึทืš ืื•ื™ืฃ ืฆื• ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ;

  • ืคึผืึทืจืึทืœืขืœ: ื“ืขืจ ืกืขืจื•ื•ืขืจ ืื™ื– ื“ื™ื–ื™ื™ื ื“ ืฆื• ื“ื™ื ืขืŸ ืงื™ื™ืคืœ ืงืœื™ื™ืึทื ืฅ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™.

ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ืึท ื™ื˜ืขืจืึทื˜ื™ื•ื• ืกืขืจื•ื•ืขืจ ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ FIFO ืงื™ื•ื– ืื™ื– ืฉื•ื™ืŸ ื“ืขืจืœืื ื’ื˜ ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 44.8.

ื™ื˜ืขืจืึทื˜ื™ื•ื•ืข ืกืขืจื•ื•ืขืจืก ื–ืขื ืขืŸ ื™ื•ื–ืฉืึทื•ื•ืึทืœื™ ื‘ืœื•ื™ื– ืคึผืึทืกื™ืง ืื™ืŸ ืกื™ื˜ื•ืึทื˜ื™ืึธื ืก ื•ื•ื• ืงืœื™ืขื ื˜ ืจื™ืงื•ื•ืขืก ืงืขื ืขืŸ ื–ื™ื™ืŸ ืคึผืจืึทืกืขืกื˜ ืคืขืจืœื™ ื’ืขืฉื•ื•ื™ื ื“, ื•ื•ื™ื™ึทืœ ื™ืขื“ืขืจ ืงืœื™ืขื ื˜ ืื™ื– ื’ืขืฆื•ื•ื•ื ื’ืขืŸ ืฆื• ื•ื•ืึทืจื˜ืŸ ื‘ื™ื– ืงื™ื™ืŸ ืื ื“ืขืจืข ืงืœื™ื™ืึทื ืฅ ืื™ืŸ ืคืจืึธื ื˜ ืคื•ืŸ ืื™ื ื”ืึธื‘ืŸ ืฉื•ื™ืŸ ื’ืขื“ื™ื ื˜. ื ืคึผืจืึธืกื˜ ื ื•ืฆืŸ ืคืึทืœ ืคึฟืึทืจ ื“ืขื ืฆื•ื’ืึทื ื’ ืื™ื– ื“ืขืจ ื•ื•ืขืงืกืœ ืคื•ืŸ ืื™ื™ืŸ ืจื™ืงื•ื•ืขืก ืื•ืŸ ืจืขืกืคึผืึธื ืกืขืก ืฆื•ื•ื™ืฉืŸ ืึท ืงืœื™ืขื ื˜ ืื•ืŸ ืกืขืจื•ื•ืขืจ.

ืคึผืึทืจืึทืœืขืœ ืกืขืจื•ื•ืขืจืก ื–ืขื ืขืŸ ืคึผืึทืกื™ืง ืื™ืŸ ืงืึทืกืขืก ื•ื•ื• ื™ืขื“ืขืจ ื‘ืงืฉื” ื ืขืžื˜ ืึท ื‘ืึทื˜ื™ื™ื˜ื™ืง ืกื•ืžืข ืคื•ืŸ โ€‹โ€‹โ€‹โ€‹ืฆื™ื™ื˜ ืฆื• ืคึผืจืึธืฆืขืก, ืึธื“ืขืจ ื•ื•ื• ื“ืขืจ ืงืœื™ืขื ื˜ ืื•ืŸ ืกืขืจื•ื•ืขืจ ื“ื™ื ื’ืขืŸ ืื™ืŸ ืœืึทื ื’ ืึธื ื–ืึธื’ ื™ืงืกื˜ืฉื™ื™ื ื“ื–ืฉื™ื–. ืื™ืŸ ื“ืขื ืงืึทืคึผื™ื˜ืœ, ืžื™ืจ ื•ื•ืขืœืŸ ื“ืขืจ ื”ื•ื™ืคึผื˜ ืคืึธืงื•ืก ืื•ื™ืฃ ื“ื™ ื˜ืจืื“ื™ืฆื™ืื ืขืœืŸ (ืื•ืŸ ืกื™ืžืคึผืœืึทืกื˜) ื•ื•ืขื’ ืคื•ืŸ ื“ื™ื–ื™ื™ื ื™ื ื’ ืคึผืึทืจืึทืœืขืœ ืกืขืจื•ื•ืขืจืก, ื•ื•ืึธืก ืื™ื– ืฆื• ืฉืึทืคึฟืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืงื™ื ื“ ืคึผืจืึธืฆืขืก ืคึฟืึทืจ ื™ืขื“ืขืจ ื ื™ื™ึท ืงืœื™ืขื ื˜. ื“ืขืจ ืคึผืจืึธืฆืขืก ืคึผืขืจืคืึธืจืžื– ืึทืœืข ื“ื™ ืึทืจื‘ืขื˜ ืฆื• ื“ื™ื ืขืŸ ื“ืขื ืงืœื™ืขื ื˜ ืื•ืŸ ื“ืขืžืึธืœื˜ ืขื ื“ืก. ื•ื•ื™ื™ึทืœ ื™ืขื“ืขืจ ืคื•ืŸ ื“ื™ ืคึผืจืึทืกืขืกืึทื– ืึทืคึผืขืจื™ื™ืฅ ื™ื ื“ื™ืคึผืขื ื“ืึทื ื˜ืœื™, ืขืก ืื™ื– ืžืขื’ืœืขืš ืฆื• ื“ื™ื ืขืŸ ืงื™ื™ืคืœ ืงืœื™ื™ืึทื ืฅ ืกื™ื™ืžืึทืœื˜ื™ื™ื ื™ืึทืกืœื™. ื“ื™ ื”ื•ื™ืคึผื˜ ืึทืจื‘ืขื˜ ืคื•ืŸ ื“ื™ ื”ื•ื™ืคึผื˜ ืกืขืจื•ื•ืขืจ ืคึผืจืึธืฆืขืก (ืคืึธื˜ืขืจ) ืื™ื– ืฆื• ืฉืึทืคึฟืŸ ืึท ื‘ืึทื–ื•ื ื“ืขืจ ืงื™ื ื“ ืคึฟืึทืจ ื™ืขื“ืขืจ ื ื™ื™ึท ืงืœื™ืขื ื˜ (ืึธืœื˜ืขืจื ืึทื˜ื™ื•ื•ืœื™, ืคึฟืขื“ืขื ืคื•ืŸ ื“ื•ืจื›ืคื™ืจื•ื ื’ ืงืขื ืขืŸ ื–ื™ื™ืŸ ื‘ืืฉืืคืŸ ืึทื ืฉื˜ืึธื˜ ืคื•ืŸ ืคึผืจืึทืกืขืกืึทื–).

ืื™ืŸ ื“ื™ ืคืืœื’ืขื ื“ืข ืกืขืงืฉืึทื ื–, ืžื™ืจ ื•ื•ืขืœืŸ ืงื•ืงืŸ ืื™ืŸ ื‘ื™ื™ืฉืคื™ืœืŸ ืคื•ืŸ ื™ื˜ืขืจืึทื˜ื™ื•ื•ืข ืื•ืŸ ืคึผืึทืจืึทืœืขืœ ืื™ื ื˜ืขืจื ืขื˜ ืคืขืœื“ ื›ืึธืœืขืœ ืกืขืจื•ื•ืขืจืก. ื“ื™ ืฆื•ื•ื™ื™ ืกืขืจื•ื•ืขืจืก ื™ื ืกื˜ืจื•ืžืขื ื˜ ืึท ืกื™ืžืคึผืœืึทืคื™ื™ื“ ื•ื•ืขืจืกื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืขืงืึธื• ื“ื™ื ืกื˜ (RFC 862), ื•ื•ืึธืก ืงืขืจื˜ ืึท ืงืึธืคึผื™ืข ืคื•ืŸ โ€‹โ€‹ืงื™ื™ืŸ ืึธื ื–ืึธื’ ื’ืขืฉื™ืงื˜ ืฆื• ืขืก ื“ื•ืจืš ืึท ืงืœื™ืขื ื˜.

ื™ื˜ืขืจืึทื˜ื™ื•ื• ื•ื“ืคึผ ืกืขืจื•ื•ืขืจ ื•ื•ื™ื“ืขืจืงืึธืœ

ืื™ืŸ ื“ืขื ืื•ืŸ ื“ืขืจ ื•ื•ื™ื™ึทื˜ืขืจ ืึธืคึผื˜ื™ื™ืœื•ื ื’ ืžื™ืจ ืคืึธืจืฉื˜ืขืœืŸ ื“ื™ ืกืขืจื•ื•ืขืจืก ืคึฟืึทืจ ื“ื™ ืขืงืึธื• ื“ื™ื ืกื˜. ืขืก ืื™ื– ื‘ืืจืขื›ื˜ื™ื’ื˜ ืื•ื™ืฃ ืคึผืึธืจื˜ ื ื•ืžืขืจ 7 ืื•ืŸ ืึทืจื‘ืขื˜ ืื™ื‘ืขืจ ื‘ื™ื™ื“ืข UDP ืื•ืŸ TCP (ื“ืขื ืคึผืึธืจื˜ ืื™ื– ืจืขื–ืขืจื•ื•ื™ืจื˜, ืื•ืŸ ื“ืขืจื™ื‘ืขืจ ื“ื™ ืขืงืึธื• ืกืขืจื•ื•ืขืจ ืžื•ื–ืŸ ื–ื™ื™ืŸ ืœื•ื™ืคืŸ ืžื™ื˜ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืคึผืจื™ื•ื•ื™ืœืึทื“ื–ืฉืึทื–).

ื“ืขืจ ืขืงืึธื• ื•ื“ืคึผ ืกืขืจื•ื•ืขืจ ืงืึทื ื˜ื™ื ื™ื•ืึทืกืœื™ ืœื™ื™ืขื ื˜ ื“ืึทื˜ืึทื’ืจืึทืžืก ืื•ืŸ ืงืขืจื˜ ืงืืคื™ืขืก ืคื•ืŸ ื–ื™ื™ ืฆื• ื“ื™ ืกืขื ื“ืขืจ. ื–ื™ื ื˜ ื“ืขืจ ืกืขืจื•ื•ืขืจ ื ืึธืจ ื“ืึทืจืฃ ืฆื• ืคึผืจืึธืฆืขืก ืื™ื™ืŸ ืึธื ื–ืึธื’ ืื™ืŸ ืึท ืฆื™ื™ึทื˜, ืึทืŸ ื™ื˜ืขืจืึทื˜ื™ื•ื•ืข ืึทืจืงืึทื˜ืขืงื˜ืฉืขืจ ื•ื•ืขื˜ ื–ื™ื™ืŸ ื’ืขื ื•ื’. ื“ื™ ื›ืขื“ืขืจ ื˜ืขืงืข ืคึฟืึทืจ ื“ื™ ืกืขืจื•ื•ืขืจืก ืื™ื– ื’ืขื•ื•ื™ื–ืŸ ืื™ืŸ ืœื™ืกื˜ื™ื ื’ 56.1.

ืจืฉื™ืžื” 56.1. ื›ืขื“ืขืจ ื˜ืขืงืข ืคึฟืึทืจ ืžื’ื™ืœื” id_echo_sv.c ืื•ืŸ id_echo_cl.c

#include "inet_sockets.h" /* ื“ืขืจืงืœืขืจื˜ ื“ื™ ืคืึทื ื’ืงืฉืึทื ื– ืคื•ืŸ ืื•ื ื“ื–ืขืจ ื›ืึธืœืขืœ */
#ืึทืจื™ื™ึทื ื ืขืžืขืŸ "tlpi_hdr.h"

# ื“ืขืคื™ื ื™ืจืŸ ืกืขืจื•ื•ื™ืก "ืขืงืึธื•" /* UDP ื“ื™ื ืกื˜ ื ืึธืžืขืŸ */

# ื“ืขืคื™ื ื™ืจืŸ BUF_SIZE 500 /* ืžืึทืงืกื™ืžื•ื ื’ืจื™ื™ืก ืคื•ืŸ ื“ืึทื˜ืึทื’ืจืึทืžืก ืึทื–
ืงืขื ืขืŸ ื–ื™ื™ืŸ ืœื™ื™ืขื ืขืŸ ื“ื•ืจืš ืงืœื™ืขื ื˜ ืื•ืŸ ืกืขืจื•ื•ืขืจ */
_________________________________________________________________sockets/id_echo.h

ืœื™ืกื˜ื™ื ื’ 56.2 ื•ื•ื™ื™ื–ื˜ ื“ื™ ืกืขืจื•ื•ืขืจ ื™ืžืคึผืœืึทืžืขื ื˜ื™ื™ืฉืึทืŸ. ื“ื™ ืคืืœื’ืขื ื“ืข ื ืงื•ื“ื•ืช ื–ืขื ืขืŸ ื›ื“ืื™ ืฆื• ื‘ืืžืขืจืงืŸ:

  • ืฆื• ืฉื˜ืขืœืŸ ื“ืขื ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ืึทืขืžืึธืŸ ืžืึธื“ืข, ืžื™ืจ ื ื•ืฆืŸ ื“ื™ ืคื•ื ืงืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ื•ื•ืขืจื˜ ื“ืึทืขืžืึธืŸ () ืคึฟื•ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 37.2;

  • ืฆื• ืžืึทื›ืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื ืžืขืจ ืกืึธืœื™ื“, ืžื™ืจ ื ื•ืฆืŸ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื ื˜ืขืจื ืขื˜ ืคืขืœื“ ืกืึทืงืึทืฅ, ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 55.12;

  • ืื•ื™ื‘ ื“ืขืจ ืกืขืจื•ื•ืขืจ ืงืขืŸ ื ื™ืฉื˜ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืึท ืขื ื˜ืคืขืจ ืฆื• ื“ืขื ืงืœื™ืขื ื˜, ืขืก ืฉืจื™ื™ื‘ื˜ ืึท ืึธื ื–ืึธื’ ืฆื• ื“ื™ ืงืœืึธืฅ ืžื™ื˜ ื“ื™ ืกื™ืกืœืึธื’ () ืจื•ืคืŸ.

ืื™ืŸ ืึท ืคืึทืงื˜ื™ืฉ ืึทืคึผืœืึทืงื™ื™ืฉืึทืŸ, ืžื™ืจ ื•ื•ืึธืœื˜ ืžืกืชึผืžื ืึธื ื˜ืึธืŸ ืขื˜ืœืขื›ืข ืฉื™ืขื•ืจ ืื•ื™ืฃ ื“ื™ ืึธืคื˜ืงื™ื™ึทื˜ ืคื•ืŸ ืœืึธื’ื™ื ื’ ืึทืจื˜ื™ืงืœืขืŸ ื ื™ืฆืŸ ืกื™ืกืœืึธื’ (). ื“ืึธืก ื•ื•ืึธืœื˜ ืขืœื™ืžื™ื ื™ืจืŸ ื“ื™ ืžืขื’ืœืขื›ืงื™ื™ื˜ ืคื•ืŸ ืึท ืึทื˜ืึทืงืขืจ ืึธื•ื•ื•ืขืจืคืœืึธื•ื™ื ื’ ื“ื™ ืกื™ืกื˜ืขื ืงืœืึธืฅ. ืื™ืŸ ืึทื“ื™ืฉืึทืŸ, ื˜ืึธืŸ ื ื™ื˜ ืคืึทืจื’ืขืกืŸ ืึทื– ื™ืขื“ืขืจ ืจื•ืคืŸ ืฆื• ืกื™ืกืœืึธื’ () ืื™ื– ื’ืึทื ืฅ ื˜ื™ื™ึทืขืจ, ื•ื•ื™ื™ึทืœ ืขืก ื ื™ืฆื˜ fsync () ื“ื•ืจืš ืคืขืœื™ืงื™ื™ึทื˜.

ืจืฉื™ืžื” 56.2. ื™ื˜ืขืจืึทื˜ื™ืึธืŸ ืกืขืจื•ื•ืขืจ ื•ื•ืึธืก ื™ืžืคึผืœืึทืžืึทื ืฅ ื“ื™ UDP ืขืงืึธื• ื“ื™ื ืกื˜

_________________________________________________________________sockets/id_echo_sv.c
# ืึทืจื™ื™ึทื ื ืขืžืขืŸ
# ืึทืจื™ื™ึทื ื ืขืžืขืŸ "id_echo.h"
#ื™ื clude "become_daemon.h"

ื™ื ื˜
main(int argc, char *argv[])
{
int sfd;
ssize_t numRead;
socklen_t len;
ืกื˜ืจื•ืงื˜ื•ืจ ืกืึธืงืงืึทื“ื“ืจ_ืกื˜ืึธืจื™ื“ื–ืฉ ืงืœืึทื“ื“ืจ;
char buf[BUF_SIZE];
char adrStr[IS_ADDR_STR_LEN];

ืื•ื™ื‘ (ื•ื•ืขืจื˜ ื“ืึทืขืžืึธืŸ (0) == -1)
errExit("ื•ื•ืขืจื˜ ื“ืึทืขืžืึธืŸ");

sfd = inetBind(SERVICE, SOCK_DGRAM, NULL);
ืื•ื™ื‘ (sfd == -1) {
syslog(LOG_ERR, "ืงืขืŸ ื ื™ืฉื˜ ืฉืึทืคึฟืŸ ืกืขืจื•ื•ืขืจ ื›ืึธืœืขืœ (%s)",
ืกื˜ืจืขืจืจืึธืจ (ืขืจืจื ืึธ));
ืึทืจื•ื™ืกื’ืึทื ื’ (EXIT_FAILURE);

/* ื‘ืึทืงื•ืžืขืŸ ื“ืึทื˜ืึทื’ืจืึทืžืขืŸ ืื•ืŸ ืฆื•ืจื™ืงืงื•ืžืขืŸ ืงืึธืคึผื™ืขืก ืคื•ืŸ ื–ื™ื™ ืฆื• ื“ื™ ืกืขื ื“ืขืจืก */
}
ืคึฟืึทืจ (;;) {
len = sizeof (ืกื˜ืจื•ืงื˜ ืกืึธืงืงืึทื“ื“ืจ_ืกื˜ืึธืจื™ื“ื–ืฉ);
numRead = recvfrom(sfd, buf, BUF_SIZE, 0, (struct sockaddr *) &claddr, &len);

ืื•ื™ื‘ (ื ื•ืžืขืจืœื™ื™ืขื ืขืŸ == -1)
ืขืจืจืขืงืกื™ื˜ ("ืจืขืงื•ื•ืคึฟืจืึธื");
ืื•ื™ื‘ (ื’ืขืฉื™ืงื˜ (sfd, buf, numRead, 0, (struct sockaddr *) &claddr, len)
!= ื ื•ืžืขืจืœื™ื™ืขื ืขืŸ)
syslog(LOG_WARNING, "ื˜ืขื•ืช ื•ื•ื™ื“ืขืจืงืึธืœืŸ ืขื ื˜ืคืขืจ ืฆื• %s (%s)",
inetAddressStr((struct sockaddr *) &claddr, len,
adrStr, IS_ADDR_STR_LEN),
ืกื˜ืจืขืจืจืึธืจ (ืขืจืจื ืึธ));
}
}
_________________________________________________________________sockets/id_echo_sv.c

ืฆื• ืคึผืจื•ื‘ื™ืจืŸ ื“ื™ ืึธืคึผืขืจืึทืฆื™ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืกืขืจื•ื•ืขืจ, ืžื™ืจ ื ื•ืฆืŸ ื“ื™ ืคึผืจืึธื’ืจืึทื ืคึฟื•ืŸ ืœื™ืกื˜ื™ื ื’ 56.3. ืขืก ืื•ื™ืš ื ื™ืฆื˜ ื“ื™ ื‘ื™ื‘ืœื™ืึธื˜ืขืง ืคึฟืึทืจ ืืจื‘ืขื˜ืŸ ืžื™ื˜ ืื™ื ื˜ืขืจื ืขื˜ ืคืขืœื“ ืกืึทืงืึทืฅ, ื“ืขื•ื•ืขืœืึธืคึผืขื“ ืื™ืŸ ืึธืคึผื˜ื™ื™ืœื•ื ื’ 55.12. ื•ื•ื™ ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜, ื“ืขืจ ืงืœื™ืขื ื˜ ืคึผืจืึธื’ืจืึทื ื ืขืžื˜ ื“ื™ ื ืึธืžืขืŸ ืคื•ืŸ ื“ื™ ื ืขืฅ ื ืึธื“ืข ืื•ื™ืฃ ื•ื•ืึธืก ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ื– ืœื™ื’ืŸ. ื“ืขืจ ืงืœื™ืขื ื˜ ื’ื™ื™ื˜ ืืจื™ื™ืŸ ืื™ืŸ ื ืฉืœื™ื™ืฃ ื•ื•ืื• ืขืจ ืฉื™ืงื˜ ื™ืขื“ืข ืคื•ืŸ โ€‹โ€‹ื“ื™ ืื™ื‘ืขืจื™ื’ืข ืืจื’ื•ืžืขื ื˜ืŸ ืฆื•ื ืกืขืจื•ื•ืขืจ ืืœืก ื‘ืื–ื•ื ื“ืขืจืข ื“ืื˜ืื’ืจืื, ืื•ืŸ ื“ืืŸ ืœื™ื™ืขื ื˜ ืื•ืŸ ื“ืจื•ืงื˜ ื“ื™ ื“ืื˜ืื’ืจืื ื•ื•ืืก ืขืจ ื‘ืืงื•ืžื˜ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ืŸ ืขื ื˜ืคืขืจ.

ืจืฉื™ืžื” 56.3. ืงืœื™ืขื ื˜ ืคึฟืึทืจ UDP ืขืงืึธื• ื“ื™ื ืกื˜

# ืึทืจื™ื™ึทื ื ืขืžืขืŸ "id_echo.h"

ื™ื ื˜
main(int argc, char *argv[])
{
int sfd, ื“ื–ืฉ;
ื’ืจื™ื™ืก_ื˜ ืœืขื ;
ssize_t numRead;
char buf[BUF_SIZE];

ืื•ื™ื‘ (ืึทืจื’ืง <2 || ืกื˜ืจืงืžืคึผ (ืึทืจื’ื•ื• [1], "--ื”ื™ืœืฃ") == 0)
usageErr ("%s ื‘ืึทืœืขื‘ืึธืก ืžืกื’ ... n", ืึทืจื’ื•ื• [0]);

/* ืคืึธืจืขื ื“ื™ ืกืขืจื•ื•ืขืจ ืึทื“ืจืขืก ื‘ืื–ื™ืจื˜ ืื•ื™ืฃ ื“ืขืจ ืขืจืฉื˜ืขืจ ื‘ืึทืคึฟืขืœืŸ ืฉื•ืจื” ืึทืจื’ื•ืžืขื ื˜ */
sfd = inetConnect (ืึทืจื’ื•ื• [1], ืกืขืจื•ื•ื™ืก, SOCK_DGRAM);
ืื•ื™ื‘ (sfd == -1)
fatal ("ืงืขืŸ ื ื™ืฉื˜ ืคืึทืจื‘ื™ื ื“ืŸ ืฆื• ืกืขืจื•ื•ืขืจ ื›ืึธืœืขืœ");

/* ืฉื™ืงืŸ ื“ื™ ืจื•ืขืŸ ืึทืจื’ื•ืžืขื ื˜ืŸ ืฆื• ื“ื™ ืกืขืจื•ื•ืขืจ ืื™ืŸ ื“ื™ ืคืึธืจืขื ืคื•ืŸ ื‘ืึทื–ื•ื ื“ืขืจ ื“ืึทื˜ืึทื’ืจืึทืžื– */
ืคึฟืึทืจ (ื“ื–ืฉ = 2; ื“ื–ืฉ < ืึทืจื’ืง; ื“ื–ืฉ++) {
len = ืกื˜ืจืœืขืŸ (ืึทืจื’ื•ื•[ื“ื–ืฉ]);
ืื•ื™ื‘ (ืฉืจื™ื™ึทื‘ืŸ (sfd, argv[j], len) != len)
ืคืึทื˜ืึทืœ ("ืคึผืึทืจื˜ื™ื™ื™ืฉ / ื ื™ื˜ ืึทื ื“ืขืจืฉ ืฉืจื™ื™ึทื‘ืŸ");

numRead = ืœื™ื™ืขื ืขืŸ (sfd, buf, BUF_SIZE);
ืื•ื™ื‘ (ื ื•ืžืขืจืœื™ื™ืขื ืขืŸ == -1)
errExit ("ืœื™ื™ืขื ืขืŸ");
printf ("[%ืœื“ ื‘ื™ื˜ืขืก] %.*sn", (ืœืึทื ื’) numRead, (ื™ื ื˜) numRead, buf);
}
ืึทืจื•ื™ืกื’ืึทื ื’ (EXIT_SUCCESS);
}
__________________________________________________________________sockets/id_echo_cl.c

ื•ื ื˜ืขืจ ืื™ื– ืึท ื‘ื™ื™ืฉืคึผื™ืœ ืคื•ืŸ ื•ื•ืึธืก ืžื™ืจ ื•ื•ืขืœืŸ ื–ืขืŸ ื•ื•ืขืŸ ืคืœื™ืกื ื“ื™ืง ื“ื™ ืกืขืจื•ื•ืขืจ ืื•ืŸ ืฆื•ื•ื™ื™ ืงืœื™ืขื ื˜ ื™ื ืกื˜ืึทื ืกื™ื–:

$su // ืคึผืจื™ื•ื•ื™ืœืึทื“ื–ืฉืึทื– ื–ืขื ืขืŸ ืคืืจืœืื ื’ื˜ ืฆื• ื‘ื™ื ื“ืŸ ืฆื• ืึท ืจืขื–ืขืจื•ื•ื™ืจื˜ ืคึผืึธืจื˜
ืคึผืึทืจืึธืœ:
# ./id_echo_sv // ืกืขืจื•ื•ื™ืจืขืจ ื’ื™ื™ื˜ ืื™ืŸ ื”ื™ื ื˜ืขืจื’ืจื•ื ื˜ ืžืึธื“ืข
# ืึทืจื•ื™ืกื’ืึทื ื’ // ื’ืขื‘ืŸ ืึทืจื•ื™ืฃ ืึทื“ืžื™ื ื™ืกื˜ืจืึทื˜ืึธืจ ืจืขื›ื˜
$ ./id_echo_cl localhost ื”ืขืœื ื•ื•ืขืœื˜ // ื“ืขืจ ืงืœื™ืขื ื˜ ืกืขื ื“ื– ืฆื•ื•ื™ื™ ื“ืึทื˜ืึทื’ืจืึทืžืก
[5 ื‘ื™ื˜ืขืก] ื”ืขืœื // ื“ืขืจ ืงืœื™ืขื ื˜ ื“ื™ืกืคึผืœื™ื™ื– ื“ื™ ืขื ื˜ืคืขืจ ื‘ืืงื•ืžืขืŸ ืคื•ืŸ ื“ื™ ืกืขืจื•ื•ืขืจ
[5 ื‘ื™ื˜ืขืก] ื•ื•ืขืœื˜
$ ./id_echo_cl localhost ื–ื™ื™ึท ื’ืขื–ื•ื ื˜ // ื“ืขืจ ืงืœื™ืขื ื˜ ืกืขื ื“ื– ืื™ื™ืŸ ื“ืึทื˜ืึทื’ืจืึทื
[7 ื‘ื™ื˜ืขืก] ื–ื™ื™ึท ื’ืขื–ื•ื ื˜

ืื™ืš ื•ื•ื™ื ื˜ืฉืŸ ืื™ืจ ืึท ืึธื ื’ืขื ืขื ืœื™ื™ืขื ืขืŸ)

ืžืงื•ืจ: linux.org.ru