āĻļā§āĻ āĻ āĻĒāĻ°āĻžāĻšā§āĻ¨ āĻāĻŽāĻŋ "āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ API" āĻŦāĻāĻāĻŋ āĻāĻĒāĻ¨āĻžāĻ° āĻ¨āĻāĻ°ā§ āĻāĻ¨ā§āĻāĻŋāĨ¤ āĻŦā§āĻ¯āĻžāĻĒāĻ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻŋāĻāĻž "(āĻŦāĻāĻāĻŋāĻ° āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸) āĻāĻāĻŋ āĻĒā§āĻ°āĻāĻžāĻļāĻā§āĻ° āĻāĻ¯āĻŧā§āĻŦāĻ¸āĻžāĻāĻā§ āĻ āĻ°ā§āĻĄāĻžāĻ° āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻŦāĻ āĻ¯āĻĻāĻŋ āĻāĻĒāĻ¨āĻŋ āĻĒā§āĻ°āĻāĻžāĻ° āĻā§āĻĄ āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§āĻ¨ LinuxAPI āĻāĻĒāĻ¨āĻŋ 30% āĻĄāĻŋāĻ¸āĻāĻžāĻāĻ¨ā§āĻ āĻĒāĻžāĻŦā§āĻ¨āĨ¤
āĻĒāĻ°ā§āĻ¯āĻžāĻ˛ā§āĻāĻ¨āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻāĻĻā§āĻ§ā§āĻ¤āĻŋ:
āĻ¸āĻā§āĻ: āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°
āĻāĻ āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻŽā§āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ¯āĻŧā§ āĻāĻ˛ā§āĻāĻ¨āĻž āĻāĻ°āĻŦ, āĻ¸ā§āĻāĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ inetd āĻĄā§āĻŽāĻ¨ āĻ¯āĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°-āĻ¸āĻžāĻāĻĄ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¤ā§āĻ°āĻŋāĻ° āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻĻā§āĻ¯āĻŧāĨ¤
āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°
āĻĻā§āĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻ¸āĻā§āĻ-āĻāĻŋāĻ¤ā§āĻ¤āĻŋāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ°āĻ¯āĻŧā§āĻā§:
-
āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ: āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻāĻāĻŦāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°ā§, āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§ (āĻŦāĻž āĻāĻāĻžāĻ§āĻŋāĻ āĻ āĻ¨ā§āĻ°ā§āĻ§) āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°ā§ āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§āĻ¤ā§ āĻāĻ˛ā§ āĻ¯āĻžāĻ¯āĻŧ;
-
āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛: āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻŦāĻŋāĻāĻžāĻ 44.8 āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ FIFO āĻ¸āĻžāĻ°āĻŋāĻā§āĻ˛āĻŋāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĻā§āĨ¤
āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻā§āĻŦāĻ˛āĻŽāĻžāĻ¤ā§āĻ° āĻ¸ā§āĻ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ¤ā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻ āĻ¨ā§āĻ°ā§āĻ§āĻā§āĻ˛āĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āĻĻā§āĻ°ā§āĻ¤ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻž āĻ¯ā§āĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻāĻžāĻ°āĻŖ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻ āĻĒā§āĻā§āĻˇāĻž āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¯āĻ¤āĻā§āĻˇāĻŖ āĻ¨āĻž āĻāĻāĻŋāĻ° āĻ¸āĻžāĻŽāĻ¨ā§ āĻĨāĻžāĻāĻž āĻ āĻ¨ā§āĻ¯ āĻā§āĻ¨āĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°ā§āĻ° āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻāĻ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻāĻŦāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻŦāĻŋāĻ¨āĻŋāĻŽāĻ¯āĻŧ āĻāĻ°āĻžāĨ¤
āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻ¸ā§āĻ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§ āĻāĻĒāĻ¯ā§āĻā§āĻ¤ āĻ¯ā§āĻāĻžāĻ¨ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ āĻ¨ā§āĻ°ā§āĻ§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¸āĻŽāĻ¯āĻŧ āĻ˛āĻžāĻā§, āĻŦāĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻŦāĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻĻā§āĻ°ā§āĻ āĻāĻĻāĻžāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻ āĻ§ā§āĻ¯āĻžāĻ¯āĻŧā§, āĻāĻŽāĻ°āĻž āĻĒā§āĻ°āĻ§āĻžāĻ¨āĻ¤ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĄāĻŋāĻāĻžāĻāĻ¨ āĻāĻ°āĻžāĻ° āĻāĻ¤āĻŋāĻšā§āĻ¯āĻāĻ¤ (āĻāĻŦāĻ āĻ¸āĻŦāĻā§āĻ¯āĻŧā§ āĻ¸āĻšāĻ) āĻāĻĒāĻžāĻ¯āĻŧā§āĻ° āĻāĻĒāĻ° āĻĢā§āĻāĻžāĻ¸ āĻāĻ°āĻŦ, āĻ¯āĻž āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻļāĻŋāĻļā§ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĨ¤ āĻāĻ āĻ§āĻ°āĻ¨ā§āĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ āĻāĻ°ā§, āĻ¯āĻžāĻ° āĻĒāĻ°ā§ āĻāĻāĻŋ āĻļā§āĻˇ āĻšāĻ¯āĻŧāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§, āĻ¤āĻžāĻ āĻāĻāĻ āĻ¸āĻŽāĻ¯āĻŧā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻĒāĻ°āĻŋāĻŦā§āĻļāĻ¨ āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĨ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻ (āĻĒāĻŋāĻ¤āĻžāĻŽāĻžāĻ¤āĻž) āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻ¸āĻ¨ā§āĻ¤āĻžāĻ¨ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž (āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻžāĻŦā§, āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻā§āĻ˛āĻŋāĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§, āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ā§āĻ° āĻĨā§āĻ°ā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĻ¨)āĨ¤
āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻ āĻĄā§āĻŽā§āĻ¨ āĻ¸āĻā§āĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻāĻŦāĻ āĻ¸āĻŽāĻžāĻ¨ā§āĻ¤āĻ°āĻžāĻ˛ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋāĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖāĻā§āĻ˛āĻŋ āĻĻā§āĻāĻŦāĨ¤ āĻāĻ āĻĻā§āĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻŋāĻ¸ (RFC 862) āĻāĻ° āĻāĻāĻāĻŋ āĻ¸āĻ°āĻ˛ā§āĻā§āĻ¤ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻāĻ°ā§ āĻ¯āĻž āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒā§āĻ°ā§āĻ°āĻŋāĻ¤ āĻ¯ā§āĻā§āĻ¨ā§ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤
āĻāĻā§ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻāĻĄāĻŋāĻĒāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°
āĻāĻ āĻāĻŦāĻ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻŦāĻŋāĻāĻžāĻā§, āĻāĻŽāĻ°āĻž āĻāĻā§ āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§āĻ˛āĻŋ āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ°āĻŦāĨ¤ āĻāĻāĻŋ 7 āĻ¨āĻŽā§āĻŦāĻ° āĻĒā§āĻ°ā§āĻā§ āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻŦāĻ āĻāĻāĻŋ UDP āĻāĻŦāĻ TCP āĻāĻāĻ¯āĻŧ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§āĻ āĻāĻžāĻ āĻāĻ°ā§ (āĻāĻ āĻĒā§āĻ°ā§āĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤, āĻāĻŦāĻ āĻ¸ā§āĻāĻāĻ¨ā§āĻ¯ āĻāĻā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻĒā§āĻ°āĻļāĻžāĻ¸āĻā§āĻ° āĻŦāĻŋāĻļā§āĻˇāĻžāĻ§āĻŋāĻāĻžāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ˛āĻžāĻ¨ā§ āĻāĻŦāĻļā§āĻ¯āĻ)āĨ¤
āĻāĻā§ āĻāĻāĻĄāĻŋāĻĒāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻ°āĻŽāĻžāĻāĻ¤ āĻĄā§āĻāĻžāĻā§āĻ°āĻžāĻŽ āĻĒāĻĄāĻŧā§ āĻāĻŦāĻ āĻ¸ā§āĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ āĻ¨ā§āĻ˛āĻŋāĻĒāĻŋ āĻĒā§āĻ°ā§āĻ°āĻā§āĻ° āĻāĻžāĻā§ āĻĢā§āĻ°āĻ¤ āĻĻā§āĻ¯āĻŧāĨ¤ āĻ¯ā§āĻšā§āĻ¤ā§ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻā§ āĻāĻāĻŦāĻžāĻ°ā§ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¤āĻžāĻ āĻāĻāĻžāĻ¨ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋāĻŽā§āĻ˛āĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ¯āĻĨā§āĻˇā§āĻ āĻšāĻŦā§āĨ¤ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻšā§āĻĄāĻžāĻ° āĻĢāĻžāĻāĻ˛āĻāĻŋ āĻ¤āĻžāĻ˛āĻŋāĻāĻž 56.1-XNUMX āĻ āĻĻā§āĻāĻžāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻā§āĨ¤
āĻ¤āĻžāĻ˛āĻŋāĻāĻž 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-XNUMX āĻ¤āĻžāĻ˛āĻŋāĻāĻž āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨ āĻĻā§āĻāĻžāĻ¯āĻŧāĨ¤ āĻāĻāĻŋ āĻ¨āĻŋāĻŽā§āĻ¨āĻ˛āĻŋāĻāĻŋāĻ¤ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ˛āĻā§āĻˇāĻ¨ā§āĻ¯āĻŧ āĻŽā§āĻ˛ā§āĻ¯:
-
āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋāĻā§ āĻĄā§āĻŽāĻ¨ āĻŽā§āĻĄā§ āĻ°āĻžāĻāĻ¤ā§, āĻāĻŽāĻ°āĻž āĻ¸ā§āĻāĻļāĻ¨ 37.2 āĻĨā§āĻā§ becomeDaemon() āĻĢāĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ;
-
āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻāĻŋāĻā§ āĻāĻ°āĻ āĻāĻŽāĻĒā§āĻ¯āĻžāĻā§āĻ āĻāĻ°āĻ¤ā§, āĻāĻŽāĻ°āĻž 55.12 āĻ¸ā§āĻāĻļāĻ¨ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ¨ā§āĻāĻžāĻ°āĻ¨ā§āĻ āĻĄā§āĻŽā§āĻāĻ¨ āĻ¸āĻā§āĻ āĻ˛āĻžāĻāĻŦā§āĻ°ā§āĻ°āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻŋ;
-
āĻ¯āĻĻāĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻāĻā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻĢā§āĻ°āĻ¤ āĻĻāĻŋāĻ¤ā§ āĻ¨āĻž āĻĒāĻžāĻ°ā§, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻāĻŋ syslog() āĻāĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ˛āĻā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻ˛ā§āĻā§āĨ¤
āĻāĻāĻāĻŋ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ā§, āĻāĻŽāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦāĻ¤ syslog() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ˛āĻāĻŋāĻ āĻŦāĻžāĻ°ā§āĻ¤āĻžāĻā§āĻ˛āĻŋāĻ° āĻĢā§āĻ°āĻŋāĻā§āĻ¯āĻŧā§āĻ¨ā§āĻ¸āĻŋāĻ° āĻāĻĒāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻ¸ā§āĻŽāĻž āĻāĻ°ā§āĻĒ āĻāĻ°āĻŦāĨ¤ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻā§āĻ°āĻŽāĻŖāĻāĻžāĻ°ā§āĻ° āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻ˛āĻ āĻāĻĒāĻā§ āĻĒāĻĄāĻŧāĻžāĻ° āĻ¸āĻŽā§āĻāĻžāĻŦāĻ¨āĻž āĻĻā§āĻ° āĻāĻ°āĻŦā§ā§ˇ āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻŽāĻ¨ā§ āĻ°āĻžāĻāĻŦā§āĻ¨ āĻ¯ā§ āĻĒā§āĻ°āĻ¤āĻŋāĻāĻŋ syslog() āĻāĻ˛ āĻŦā§āĻļ āĻŦā§āĻ¯āĻ¯āĻŧāĻŦāĻšā§āĻ˛, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āĻāĻ°ā§āĻĒā§ fsync() āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĨ¤
āĻ¤āĻžāĻ˛āĻŋāĻāĻž 56.2. āĻāĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻ¯āĻž āĻāĻā§ UDP āĻĒāĻ°āĻŋāĻˇā§āĻŦāĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§
_____________________________________________________________________ āĻ¸āĻā§āĻ/id_echo_sv.c
#āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤
# "id_echo.h" āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨
# āĻ
āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°ā§āĻ¨ "become_daemon.h"
āĻā§āĻ¨ int
āĻĒā§āĻ°āĻ§āĻžāĻ¨ (int argc, char *argv[])
{
int sfd;
ssize_t numRead;
socklen_tlen;
struct sockaddr_storage claddr;
charbuf[BUF_SIZE];
char addrStr[IS_ADDR_STR_LEN];
āĻ¯āĻĻāĻŋ (āĻĄā§āĻŽāĻ¨ āĻšāĻ¯āĻŧā§ āĻ¯āĻžāĻ¯āĻŧ (0) == -1)
errExit("becomeDaemon");
sfd = inetBind(SERVICE, 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);
āĻ¯āĻĻāĻŋ (āĻ¸āĻāĻā§āĻ¯āĻž == -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[])
{
int sfd,j;
size_tlen;
ssize_t numRead;
charbuf[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 = read(sfd, buf, BUF_SIZE);
āĻ¯āĻĻāĻŋ (āĻ¸āĻāĻā§āĻ¯āĻž == -1)
errExit("āĻĒāĻĄāĻŧā§āĻ¨");
printf("[%ld āĻŦāĻžāĻāĻ] %.*sn", (āĻĻā§āĻ°ā§āĻ) numRead, (int) numRead, buf);
}
āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ (EXIT_SUCCESS);
}
_____________________________________________________________________ āĻ¸āĻā§āĻ/id_echo_cl.c
āĻāĻŽāĻ°āĻž āĻ¯āĻāĻ¨ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻāĻŦāĻ āĻĻā§āĻāĻŋ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻ¨āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻļā§āĻ°ā§ āĻāĻ°āĻŦ āĻ¤āĻāĻ¨ āĻāĻŽāĻ°āĻž āĻā§ āĻĻā§āĻāĻ¤ā§ āĻĒāĻžāĻŦ āĻ¤āĻžāĻ° āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ¨āĻŋāĻā§ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ˛:
$ su // āĻāĻāĻāĻŋ āĻ¸āĻāĻ°āĻā§āĻˇāĻŋāĻ¤ āĻĒā§āĻ°ā§āĻā§ āĻāĻŦāĻĻā§āĻ§ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻŦāĻŋāĻļā§āĻˇāĻžāĻ§āĻŋāĻāĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§ˇ
āĻĒāĻžāĻ¸āĻāĻ¯āĻŧāĻžāĻ°ā§āĻĄ:
# ./id_echo_sv // āĻ¸āĻžāĻ°ā§āĻāĻžāĻ°āĻāĻŋ āĻŦā§āĻ¯āĻžāĻāĻā§āĻ°āĻžāĻāĻ¨ā§āĻĄā§ āĻ¯āĻžāĻ¯āĻŧ
# āĻĒā§āĻ°āĻ¸ā§āĻĨāĻžāĻ¨ āĻāĻ°ā§āĻ¨ // āĻĒā§āĻ°āĻļāĻžāĻ¸āĻā§āĻ° āĻ
āĻ§āĻŋāĻāĻžāĻ° āĻ¤ā§āĻ¯āĻžāĻ āĻāĻ°ā§āĻ¨
$ ./id_echo_cl localhost hello world // āĻāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻĻā§āĻāĻŋ āĻĄā§āĻāĻžāĻā§āĻ°āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ
[ā§Ģ āĻŦāĻžāĻāĻ] āĻšā§āĻ¯āĻžāĻ˛ā§ // āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ¸āĻžāĻ°ā§āĻāĻžāĻ° āĻĨā§āĻā§ āĻĒā§āĻ°āĻžāĻĒā§āĻ¤ āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻāĻāĻāĻĒā§āĻ āĻāĻ°ā§
[ā§Ģ āĻŦāĻžāĻāĻ] āĻŦāĻŋāĻļā§āĻŦ
$ ./id_echo_cl localhost āĻŦāĻŋāĻĻāĻžāĻ¯āĻŧ // āĻāĻ āĻā§āĻ˛āĻžāĻ¯āĻŧā§āĻ¨ā§āĻ āĻāĻāĻāĻŋ āĻĄā§āĻāĻžāĻā§āĻ°āĻžāĻŽ āĻĒāĻžāĻ āĻžāĻ¯āĻŧ
[7 āĻŦāĻžāĻāĻ] āĻŦāĻŋāĻĻāĻžāĻ¯āĻŧ
āĻāĻŽāĻŋ āĻāĻĒāĻ¨āĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻ¨āĻ¨ā§āĻĻāĻĻāĻžāĻ¯āĻŧāĻ āĻĒāĻĄāĻŧāĻž āĻāĻžāĻŽāĻ¨āĻž āĻāĻ°āĻŋ)
āĻāĻ¤ā§āĻ¸: linux.org.ru