เจจเจฎเจธเจเจพเจฐ เจฎเฉเจ เจคเฉเจนเจพเจกเฉ เจงเจฟเจเจจ เจตเจฟเฉฑเจ "เจฒเฉเจจเจเจธ API" เจเจฟเจคเจพเจฌ เจชเฉเจธเจผ เจเจฐเจฆเจพ เจนเจพเจเฅค เจเฉฑเจ เจตเจฟเจเจชเจ เจเจพเจเจก" (เจเจฟเจคเจพเจฌ เจฆเจพ เจ เจจเฉเจตเจพเจฆ เจฒเฉเจจเจเจธ เจชเฉเจฐเฉเจเจฐเจพเจฎเจฟเฉฐเจ เจเฉฐเจเจฐเจซเฉเจธ). เจเจธ เจจเฉเฉฐ เจชเฉเจฐเจเจพเจธเจผเจ เจฆเฉ เจตเฉเฉฑเจฌเจธเจพเจเจ 'เจคเฉ เจเจฐเจกเจฐ เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจ เจคเฉ เจเฉเจเจฐ เจคเฉเจธเฉเจ เจชเฉเจฐเจเจพเจฐ เจเฉเจก เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเฉ LinuxAPI , เจคเฉเจนเจพเจจเฉเฉฐ 30% เจฆเฉ เจเฉเจ เจฎเจฟเจฒเฉเจเฉเฅค
เจนเจตเจพเจฒเฉ เจฒเจ เจเจฟเจคเจพเจฌ เจคเฉเจ เจ เฉฐเจธเจผ:
เจธเจพเจเจ: เจธเจฐเจตเจฐ เจเจฐเจเฉเจเฉเจเจเจฐ
เจเจธ เจ เจงเจฟเจเจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจฆเฉเจนเจฐเจพเจ เจ เจคเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจธเจฐเจตเจฐเจพเจ เจจเฉเฉฐ เจกเจฟเจเจผเจพเจเจจ เจเจฐเจจ เจฆเฉเจเจ เจฎเฉเจฒ เจเฉฑเจฒเจพเจ 'เจคเฉ เจเจฐเจเจพ เจเจฐเจพเจเจเฉ, เจ เจคเฉ เจเฉฑเจ เจตเจฟเจธเจผเฉเจธเจผ เจกเฉเจฎเจจ เจจเฉเฉฐ เจตเฉ เจฆเฉเจเจพเจเจเฉ, เจเจฟเจธเจจเฉเฉฐ inetd เจเจฟเจนเจพ เจเจพเจเจฆเจพ เจนเฉ, เจเฉ เจเฉฐเจเจฐเจจเฉเจ เจธเจฐเจตเจฐ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจฌเจฃเจพเจเจฃเจพ เจเจธเจพเจจ เจฌเจฃเจพเจเจเจฆเจพ เจนเฉเฅค
เจฆเฉเจนเจฐเจพเจ เจ เจคเฉ เจธเจฎเจพเจเจคเจฐ เจธเจฐเจตเจฐ
เจฆเฉ เจเจฎ เจธเจพเจเจ-เจ เจงเจพเจฐเจฟเจค เจจเฉเฉฑเจเจตเจฐเจ เจธเจฐเจตเจฐ เจเจฐเจเฉเจเฉเจเจเจฐ เจนเจจ:
-
เจฆเฉเจนเจฐเจพเจ: เจธเจฐเจตเจฐ เจเฉฑเจ เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจเฉฑเจ เจเจพเจนเจเจพเจ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจฆเจพ เจนเฉ, เจชเจนเจฟเจฒเจพเจ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจคเฉเจ เจเฉฑเจ เจฌเฉเจจเจคเฉ (เจเจพเจ เจเจ เจฌเฉเจจเจคเฉเจเจ) เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจ เจเจฒเฉ เจตเจฟเฉฑเจ เจเจพเจเจฆเจพ เจนเฉ;
-
เจธเจฎเจพเจจเจพเจเจคเจฐ: เจธเจฐเจตเจฐ เจจเฉเฉฐ เจเฉฑเจเฉ เจธเจฎเฉเจ เจเจ เจเจพเจนเจเจพเจ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจจ เจฒเจ เจคเจฟเจเจฐ เจเฉเจคเจพ เจเจฟเจ เจนเฉเฅค
FIFO เจเจคเจพเจฐเจพเจ 'เจคเฉ เจ เจงเจพเจฐเจค เจเฉฑเจ เจฆเฉเจนเจฐเจพเจเจฃ เจตเจพเจฒเฉ เจธเจฐเจตเจฐ เจฆเฉ เจเจฆเจพเจนเจฐเจจ เจชเจนเจฟเจฒเจพเจ เจนเฉ เจธเฉเจเจธเจผเจจ 44.8 เจตเจฟเฉฑเจ เจชเฉเจธเจผ เจเฉเจคเฉ เจเจ เจนเฉเฅค
เจฆเฉเจนเจฐเจพเจเจฃ เจตเจพเจฒเฉ เจธเจฐเจตเจฐ เจเจฎ เจคเฉเจฐ 'เจคเฉ เจธเจฟเจฐเจซเจผ เจเจนเจจเจพเจ เจธเจฅเจฟเจคเฉเจเจ เจตเจฟเฉฑเจ เจนเฉ เจขเฉเจเจตเฉเจ เจนเฉเฉฐเจฆเฉ เจนเจจ เจเจฟเฉฑเจฅเฉ เจเจฒเจพเจเฉฐเจ เจฆเฉเจเจ เจฌเฉเจจเจคเฉเจเจ เจจเฉเฉฐ เจเจพเจซเจผเฉ เจคเฉเจเจผเฉ เจจเจพเจฒ เจธเฉฐเจธเจพเจงเจฟเจค เจเฉเจคเจพ เจเจพ เจธเจเจฆเจพ เจนเฉ, เจเจฟเจเจเจเจฟ เจนเจฐเฉเจ เจเจฒเจพเจเฉฐเจ เจจเฉเฉฐ เจเจฆเฉเจ เจคเฉฑเจ เจเฉฐเจคเจเจผเจพเจฐ เจเจฐเจจ เจฒเจ เจฎเจเจฌเฉเจฐ เจเฉเจคเจพ เจเจพเจเจฆเจพ เจนเฉ เจเจฆเฉเจ เจคเฉฑเจ เจเจธ เจฆเฉ เจธเจพเจนเจฎเจฃเฉ เจเฉเจ เจนเฉเจฐ เจเจฒเจพเจเฉฐเจเจธ เจฆเฉ เจธเฉเจตเจพ เจจเจนเฉเจ เจเฉเจคเฉ เจเจพเจเจฆเฉเฅค เจเจธ เจชเจนเฉเฉฐเจ เจฒเจ เจเฉฑเจ เจเจฎ เจตเจฐเจคเฉเจ เจฆเจพ เจเฉเจธ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจ เจคเฉ เจธเจฐเจตเจฐ เจตเจฟเจเจเจพเจฐ เจธเจฟเฉฐเจเจฒ เจฌเฉเจจเจคเฉเจเจ เจ เจคเฉ เจเจตเจพเจฌเจพเจ เจฆเจพ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจนเฉเฅค
เจชเฉเจฐเจฒเจฒ เจธเจฐเจตเจฐ เจเจนเจจเจพเจ เจฎเจพเจฎเจฒเจฟเจเจ เจตเจฟเฉฑเจ เจขเฉเจเจตเฉเจ เจนเฉเฉฐเจฆเฉ เจนเจจ เจเจฟเฉฑเจฅเฉ เจนเจฐเฉเจ เจฌเฉเจจเจคเฉ เจจเฉเฉฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจธเจฎเจพเจ เจฒเฉฑเจเจฆเจพ เจนเฉ, เจเจพเจ เจเจฟเฉฑเจฅเฉ เจเจฒเจพเจเฉฐเจ เจ เจคเฉ เจธเจฐเจตเจฐ เจฒเฉฐเจฌเฉ เจธเฉฐเจฆเฉเจธเจผเจพเจ เจฆเฉ เจเจฆเจพเจจ-เจชเฉเจฐเจฆเจพเจจ เจตเจฟเฉฑเจ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ เจนเจจเฅค เจเจธ เจ เจงเจฟเจเจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจฎเฉเฉฑเจ เจคเฉเจฐ 'เจคเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจธเจฐเจตเจฐเจพเจ เจจเฉเฉฐ เจกเจฟเจเจผเจพเจเจจ เจเจฐเจจ เจฆเฉ เจฐเจตเจพเจเจคเฉ (เจ เจคเฉ เจธเจฐเจฒ) เจคเจฐเฉเจเฉ 'เจคเฉ เจงเจฟเจเจจ เจเฉเจเจฆเจฐเจฟเจค เจเจฐเจพเจเจเฉ, เจเฉ เจเจฟ เจนเจฐเฉเจ เจจเจตเฉเจ เจเจฒเจพเจเฉฐเจ เจฒเจ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจฌเจพเจฒ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจฌเจฃเจพเจเจฃเจพ เจนเฉเฅค เจเจน เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจพเจนเจ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจจ เจฒเจ เจธเจพเจฐเจพ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเฉ เจ เจคเฉ เจซเจฟเจฐ เจเจคเจฎ เจนเฉ เจเจพเจเจฆเฉ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจนเจฐเฉเจ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจธเฉเจคเฉฐเจคเจฐ เจคเฉเจฐ 'เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเฉ เจนเฉ, เจเฉฑเจเฉ เจธเจฎเฉเจ เจเจ เจเจพเจนเจเจพเจ เจฆเฉ เจธเฉเจตเจพ เจเจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉเฅค เจฎเฉเฉฑเจ เจธเจฐเจตเจฐ เจชเฉเจฐเจเจฟเจฐเจฟเจ (เจฎเจพเจชเจฟเจเจ) เจฆเจพ เจฎเฉเฉฑเจ เจเฉฐเจฎ เจนเจฐเฉเจ เจจเจตเฉเจ เจเจฒเจพเจเฉฐเจ เจฒเจ เจเฉฑเจ เจตเฉฑเจเจฐเจพ เจฌเฉฑเจเจพ เจฌเจฃเจพเจเจฃเจพ เจนเฉ (เจตเจฟเจเจฒเจชเจฟเจ เจคเฉเจฐ 'เจคเฉ, เจชเฉเจฐเจเจฟเจฐเจฟเจเจตเจพเจ เจฆเฉ เจฌเจเจพเจ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจฆเฉ เจฅเจฐเจฟเฉฑเจก เจฌเจฃเจพเจ เจเจพ เจธเจเจฆเฉ เจนเจจ)เฅค
เจนเฉเจ เจพเจ เจฆเจฟเฉฑเจคเฉ เจญเจพเจเจพเจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจฆเฉเจนเจฐเจพเจเจฃ เจตเจพเจฒเฉ เจ เจคเฉ เจธเจฎเจพเจจเจพเจเจคเจฐ เจเฉฐเจเจฐเจจเฉเจ เจกเฉเจฎเฉเจจ เจธเจพเจเจ เจธเจฐเจตเจฐเจพเจ เจฆเฉเจเจ เจเจฆเจพเจนเจฐเจฃเจพเจ เจฆเฉเจเจพเจเจเฉเฅค เจเจน เจฆเฉ เจธเจฐเจตเจฐ เจเจเฉ เจธเฉเจตเจพ (RFC 862) เจฆเจพ เจเฉฑเจ เจธเจฐเจฒ เจธเฉฐเจธเจเจฐเจฃ เจฒเจพเจเฉ เจเจฐเจฆเฉ เจนเจจ, เจเฉ เจเจฟ เจเฉฑเจ เจเจฒเจพเจเฉฐเจ เจฆเฉเจเจฐเจพ เจเจธ เจจเฉเฉฐ เจญเฉเจเฉ เจเจ เจเจฟเจธเฉ เจตเฉ เจธเฉฐเจฆเฉเจธเจผ เจฆเฉ เจเฉฑเจ เจเจพเจชเฉ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉเฅค
เจฆเฉเจนเจฐเจพเจเจฃ เจตเจพเจฒเจพ UDP เจธเจฐเจตเจฐ เจเจเฉ
เจเจธ เจ เจคเฉ เจ เจเจฒเฉ เจญเจพเจ เจตเจฟเฉฑเจ เจ เจธเฉเจ เจเจเฉ เจธเฉเจตเจพ เจฒเจ เจธเจฐเจตเจฐเจพเจ เจจเฉเฉฐ เจชเฉเจธเจผ เจเจฐเจพเจเจเฉเฅค เจเจน เจชเฉเจฐเจ เจจเฉฐเจฌเจฐ 7 'เจคเฉ เจเจชเจฒเจฌเจง เจนเฉ เจ เจคเฉ UDP เจ เจคเฉ TCP เจฆเฉเจตเจพเจ 'เจคเฉ เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉ (เจเจน เจชเฉเจฐเจ เจฐเจฟเจเจผเจฐเจต เจนเฉ, เจ เจคเฉ เจเจธเจฒเจ เจเจเฉ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจชเฉเจฐเจฌเฉฐเจงเจ เจฆเฉ เจตเจฟเจธเจผเฉเจธเจผ เจ เจงเจฟเจเจพเจฐเจพเจ เจจเจพเจฒ เจเจฒเจพเจเจฃเจพ เจเจพเจนเฉเจฆเจพ เจนเฉ)เฅค
เจเจเฉ UDP เจธเจฐเจตเจฐ เจฒเจเจพเจคเจพเจฐ เจกเจพเจเจพเจเฉเจฐเจพเจฎ เจชเฉเฉเจนเจฆเจพ เจนเฉ เจ เจคเฉ เจญเฉเจเจฃ เจตเจพเจฒเฉ เจจเฉเฉฐ เจเจนเจจเจพเจ เจฆเฉเจเจ เจเจพเจชเฉเจเจ เจตเจพเจชเจธ เจเจฐเจฆเจพ เจนเฉเฅค เจเจฟเจเจเจเจฟ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจเฉฑเจ เจธเจฎเฉเจ เจตเจฟเฉฑเจ เจธเจฟเจฐเจซเจผ เจเฉฑเจ เจธเฉฐเจฆเฉเจธเจผ เจฆเฉ เจชเฉเจฐเจเจฟเจฐเจฟเจ เจเจฐเจจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ, เจเฉฑเจ เจฆเฉเจนเจฐเจพเจ เจขเจพเจเจเจพ เจเจพเจซเฉ เจนเฉเจตเฉเจเจพเฅค เจธเจฐเจตเจฐเจพเจ เจฒเจ เจธเจฟเจฐเจฒเฉเจ เจซเจพเจเจฒ เจธเฉเจเฉ 56.1 เจตเจฟเฉฑเจ เจฆเจฟเจเจพเจ เจเจ เจนเฉเฅค
เจธเฉเจเฉ 56.1. เจชเฉเจฐเฉเจเจฐเจพเจฎเจพเจ เจฒเจ เจนเฉเจกเจฐ เจซเจพเจเจฒ id_echo_sv.c เจ เจคเฉ id_echo_cl.c
#include "inet_sockets.h" /* เจธเจพเจกเฉ เจธเจพเจเจ เจซเฉฐเจเจธเจผเจจเจพเจ เจฆเจพ เจเจฒเจพเจจ เจเจฐเจฆเจพ เจนเฉ */
# "tlpi_hdr.h" เจธเจผเจพเจฎเจฒ เจเจฐเฉ
# เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจธเฉเจตเจพ "เจเจเฉ" /* UDP เจธเฉเจตเจพ เจจเจพเจฎ */
# เจชเจฐเจฟเจญเจพเจธเจผเจฟเจค เจเจฐเฉ BUF_SIZE 500 /* เจกเฉเจเจพเจเฉเจฐเจพเจฎ เจฆเจพ เจ
เจงเจฟเจเจคเจฎ เจเจเจพเจฐ เจเฉ
เจเจฒเจพเจเฉฐเจ เจ
เจคเฉ เจธเจฐเจตเจฐ เจฆเฉเจเจฐเจพ เจชเฉเฉเจนเจฟเจ เจเจพ เจธเจเจฆเจพ เจนเฉ */
_____________________________________________________________________ เจธเจพเจเจ/id_echo.h
เจธเฉเจเฉ 56.2 เจธเจฐเจตเจฐ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉเฅค เจนเฉเจ เจฒเจฟเจเฉ เจจเฉเจเจคเฉ เจงเจฟเจเจจ เจฆเฉเจฃ เจฏเฉเจ เจนเจจ:
-
เจธเจฐเจตเจฐ เจจเฉเฉฐ เจกเฉเจฎเจจ เจฎเฉเจก เจตเจฟเฉฑเจ เจชเจพเจเจฃ เจฒเจ, เจ เจธเฉเจ เจธเฉเจเจธเจผเจจ 37.2 เจคเฉเจ becomeDaemon() เจซเฉฐเจเจธเจผเจจ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจ;
-
เจชเฉเจฐเฉเจเจฐเจพเจฎ เจจเฉเฉฐ เจนเฉเจฐ เจธเฉฐเจเฉเจช เจฌเจฃเจพเจเจฃ เจฒเจ, เจ เจธเฉเจ เจธเฉเจเจธเจผเจจ 55.12 เจตเจฟเฉฑเจ เจตเจฟเจเจธเจค, เจเฉฐเจเจฐเจจเฉเจ เจกเฉเจฎเฉเจจ เจธเจพเจเจเจพเจ เจจเจพเจฒ เจเฉฐเจฎ เจเจฐเจจ เจฒเจ เจฒเจพเจเจฌเฉเจฐเฉเจฐเฉ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเจพเจ;
-
เจเฉเจเจฐ เจธเจฐเจตเจฐ เจเจฒเจพเจเฉฐเจ เจจเฉเฉฐ เจเจตเจพเจฌ เจจเจนเฉเจ เจฆเฉ เจธเจเจฆเจพ เจนเฉ, เจคเจพเจ เจเจน syslog() เจเจพเจฒ เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจเฉ เจฒเจพเจ เจจเฉเฉฐ เจธเฉเจจเฉเจนเจพ เจฒเจฟเจเจฆเจพ เจนเฉเฅค
เจเฉฑเจ เจ เจธเจฒ เจเจชเจฒเฉเจเฉเจธเจผเจจ เจตเจฟเฉฑเจ, เจ เจธเฉเจ เจธเฉฐเจญเจพเจตเจค เจคเฉเจฐ 'เจคเฉ syslog() เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ เจธเฉฐเจฆเฉเจธเจผเจพเจ เจจเฉเฉฐ เจฒเฉเจ เจเจฐเจจ เจฆเฉ เจฌเจพเจฐเฉฐเจฌเจพเจฐเจคเจพ 'เจคเฉ เจเฉเจ เจธเฉเจฎเจพ เจฒเจเจพเจตเจพเจเจเฉเฅค เจเจน เจธเจฟเจธเจเจฎ เจฒเฉเจ เจจเฉเฉฐ เจเจตเจฐเจซเจฒเฉ เจเจฐเจจ เจตเจพเจฒเฉ เจนเจฎเจฒเจพเจตเจฐ เจฆเฉ เจธเฉฐเจญเจพเจตเจจเจพ เจจเฉเฉฐ เจเจคเจฎ เจเจฐ เจฆเฉเจตเฉเจเจพเฅค เจเจธ เจคเฉเจ เจเจฒเจพเจตเจพ, เจเจน เจจเจพ เจญเฉเฉฑเจฒเฉ เจเจฟ syslog() เจฒเจ เจนเจฐเฉเจ เจเจพเจฒ เจเจพเจซเจผเฉ เจฎเจนเจฟเฉฐเจเฉ เจนเฉ, เจเจฟเจเจเจเจฟ เจเจน fsync() เจจเฉเฉฐ เจฎเฉเจฒ เจฐเฉเจช เจตเจฟเฉฑเจ เจตเจฐเจคเจฆเจพ เจนเฉเฅค
เจธเฉเจเฉ 56.2. เจฆเฉเจนเจฐเจพเจ เจธเจฐเจตเจฐ เจเฉ UDP เจเจเฉ เจธเฉเจตเจพ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจฆเจพ เจนเฉ
_____________________________________________________________________ เจธเจพเจเจ/id_echo_sv.c
#เจธเจผเจพเจฎเจฒ
# "id_echo.h" เจธเจผเจพเจฎเจฒ เจเจฐเฉ
# "become_daemon.h" เจธเจผเจพเจฎเจฒ เจเจฐเฉ
เจเฉฐเจ
เจฎเฉเฉฑเจ (int argc, char *argv[])
{
int sfd;
ssize_t numRead;
socklen_t len;
struct sockaddr_storage claddr;
char buf[BUF_SIZE];
char addrStr[IS_ADDR_STR_LEN];
เจเฉเจเจฐ (เจฌเจฃ เจเจฟเจ เจกเฉเจฎเจจ(0) == -1)
errExit("becomeDaemon");
sfd = inetBind(เจธเฉเจตเจพ, SOCK_DGRAM, NULL);
เจเฉเจเจฐ (sfd == -1) {
syslog(LOG_ERR, "เจธเจฐเจตเจฐ เจธเจพเจเจ เจจเจนเฉเจ เจฌเจฃเจพเจเจ เจเจพ เจธเจเจฟเจ (%s)",
strerror(errno));
เจจเจฟเจเจพเจธ (EXIT_FAILURE);
/* เจกเฉเจเจพเจเฉเจฐเจพเจฎ เจชเฉเจฐเจพเจชเจค เจเจฐเฉ เจ
เจคเฉ เจญเฉเจเจฃ เจตเจพเจฒเจฟเจเจ เจจเฉเฉฐ เจเจนเจจเจพเจ เจฆเฉเจเจ เจเจพเจชเฉเจเจ เจตเจพเจชเจธ เจเจฐเฉ */
}
เจฒเจ (;;) {
len = sizeof(struct sockaddr_storage);
numRead = recvfrom(sfd, buf, BUF_SIZE, 0, (struct sockaddr *) &claddr, &len);
เจเฉเจเจฐ (numRead == -1)
errExit("recvfrom");
if (sendto(sfd, buf, numRead, 0, (struct sockaddr *) &claddr, len)
!= numRead)
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. UDP เจเจเฉ เจธเฉเจตเจพ เจฒเจ เจเจฒเจพเจเฉฐเจ
# "id_echo.h" เจธเจผเจพเจฎเจฒ เจเจฐเฉ
เจเฉฐเจ
เจฎเฉเฉฑเจ (int argc, char *argv[])
{
int sfd, j;
เจเจเจพเจฐ_เจเฉ เจฒเฉเจจ;
ssize_t numRead;
char buf[BUF_SIZE];
เจเฉเจเจฐ (argc < 2 || strcmp(argv[1], "--help") == 0)
usageErr("%s host msgโฆn", argv[0]);
/* เจชเจนเจฟเจฒเฉ เจเจฎเจพเจเจก เจฒเจพเจเจจ เจเจฐเจเฉเจฎเฉเจเจ เจฆเฉ เจ
เจงเจพเจฐ เจคเฉ เจธเจฐเจตเจฐ เจเจกเจฐเฉเฉฑเจธ เจฌเจฃเจพเจ */
sfd = inetConnect(argv[1], SERVICE, SOCK_DGRAM);
เจเฉเจเจฐ (sfd == -1)
เจเจพเจคเจ ("เจธเจฐเจตเจฐ เจธเจพเจเจ เจจเจพเจฒ เจเจจเฉเจเจ เจจเจนเฉเจ เจเฉเจคเจพ เจเจพ เจธเจเจฟเจ");
/* เจฌเจพเจเฉ เจฌเจเฉ เจเจฐเจเฉเจฎเฉเจเจเจพเจ เจจเฉเฉฐ เจตเฉฑเจเจฐเฉ เจกเฉเจเจพเจเฉเจฐเจพเจฎ เจฆเฉ เจฐเฉเจช เจตเจฟเฉฑเจ เจธเจฐเจตเจฐ เจจเฉเฉฐ เจญเฉเจเฉ */
เจฒเจ (j = 2; j < argc; j++) {
len = strlen(argv[j]);
เจเฉเจเจฐ (เจฒเจฟเจเฉ(sfd, argv[j], len) != len)
เจเจพเจคเจ ("เจ
เฉฐเจธเจผเจ/เจ
เจธเจซเจผเจฒ เจฒเจฟเจเจค");
numRead = เจชเฉเฉเจนเฉ(sfd, buf, BUF_SIZE);
เจเฉเจเจฐ (numRead == -1)
errExit("เจชเฉเฉเจนเฉ");
printf("[%ld เจฌเจพเจเจเจธ] %.*sn", (long) numRead, (int) numRead, buf);
}
เจจเจฟเจเจพเจธ (EXIT_SUCCESS);
}
_____________________________________________________________________ เจธเจพเจเจ/id_echo_cl.c
เจนเฉเจ เจพเจ เจเฉฑเจ เจเจฆเจพเจนเจฐเจฃ เจนเฉ เจเจฟ เจ เจธเฉเจ เจธเจฐเจตเจฐ เจ เจคเฉ เจฆเฉ เจเจฒเจพเจเฉฐเจ เจเจฆเจพเจนเจฐเจจเจพเจ เจจเฉเฉฐ เจเจฒเจพเจเจฃ เจตเฉเจฒเฉ เจเฉ เจฆเฉเจเจพเจเจเฉ:
$su // เจฐเจฟเจเจผเจฐเจตเจก เจชเฉเจฐเจ เจจเจพเจฒ เจเฉเฉเจจ เจฒเจ เจตเจฟเจธเจผเฉเจธเจผ เจ
เจงเจฟเจเจพเจฐเจพเจ เจฆเฉ เจฒเฉเฉ เจนเฉเฉฐเจฆเฉ เจนเฉ
เจชเจพเจธเจตเจฐเจก:
# ./id_echo_sv // เจธเจฐเจตเจฐ เจฌเฉเจเจเฉเจฐเจพเจเจเจก เจฎเฉเจก เจตเจฟเฉฑเจ เจเจพเจเจฆเจพ เจนเฉ
# เจฌเจพเจนเจฐ เจจเจฟเจเจฒเฉ // เจชเฉเจฐเจธเจผเจพเจธเจ เจฆเฉ เจ
เจงเจฟเจเจพเจฐ เจเฉฑเจกเฉ
$ ./id_echo_cl localhost hello world // เจเจน เจเจฒเจพเจเฉฐเจ เจฆเฉ เจกเจพเจเจพเจเฉเจฐเจพเจฎ เจญเฉเจเจฆเจพ เจนเฉ
[5 เจฌเจพเจเจเจธ] เจนเฉเจฒเฉ // เจเจฒเจพเจเฉฐเจ เจธเจฐเจตเจฐ เจคเฉเจ เจชเฉเจฐเจพเจชเจค เจเจตเจพเจฌ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจเจฐเจฆเจพ เจนเฉ
[5 เจฌเจพเจเจ] เจธเฉฐเจธเจพเจฐ
$ ./id_echo_cl เจฒเฉเจเจฒเจนเฉเจธเจ เจ
เจฒเจตเจฟเจฆเจพ // เจเจน เจเจฒเจพเจเฉฐเจ เจเฉฑเจ เจกเฉเจเจพเจเฉเจฐเจพเจฎ เจญเฉเจเจฆเจพ เจนเฉ
[7 เจฌเจพเจเจเจธ] เจ
เจฒเจตเจฟเจฆเจพ
เจฎเฉเจ เจคเฉเจนเจพเจจเฉเฉฐ เจเฉฑเจ เจธเฉเจนเจพเจตเจฃเจพ เจชเฉเฉเจนเจจ เจฆเฉ เจเจพเจฎเจจเจพ เจเจฐเจฆเจพ เจนเจพเจ)
เจธเจฐเฉเจค: linux.org.ru