แƒฌแƒ˜แƒ’แƒœแƒ˜ "Linux API. แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ ยป


แƒฌแƒ˜แƒ’แƒœแƒ˜ "Linux API. แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ ยป

แฒกแƒแƒฆแƒแƒ›แƒ แƒ›แƒจแƒ•แƒ˜แƒ“แƒแƒ‘แƒ˜แƒกแƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒก แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ•แƒแƒฅแƒชแƒ”แƒ• แƒฌแƒ˜แƒ’แƒœแƒก โ€žLinux API. แƒงแƒแƒ•แƒšแƒ˜แƒกแƒ›แƒแƒ›แƒชแƒ•แƒ”แƒšแƒ˜ แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ โ€(แƒฌแƒ˜แƒ’แƒœแƒ˜แƒก แƒ—แƒแƒ แƒ’แƒ›แƒแƒœแƒ˜ Linux แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒคแƒ”แƒ˜แƒกแƒ˜). แƒ›แƒ˜แƒกแƒ˜ แƒจแƒ”แƒ™แƒ•แƒ”แƒ—แƒ แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ’แƒแƒ›แƒแƒ›แƒชแƒ”แƒ›แƒšแƒ˜แƒก แƒ•แƒ”แƒ‘แƒกแƒแƒ˜แƒขแƒ–แƒ” แƒ“แƒ แƒžแƒ แƒแƒ›แƒ แƒ™แƒแƒ“แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ LinuxAPI แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒ— 30%-แƒ˜แƒแƒœ แƒคแƒแƒกแƒ“แƒแƒ™แƒšแƒ”แƒ‘แƒแƒก.

แƒแƒ›แƒแƒœแƒแƒ แƒ˜แƒ“แƒ˜ แƒฌแƒ˜แƒ’แƒœแƒ˜แƒ“แƒแƒœ แƒ’แƒแƒœแƒกแƒแƒฎแƒ˜แƒšแƒ•แƒ”แƒšแƒแƒ“:

แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ

แƒแƒ› แƒ—แƒแƒ•แƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒšแƒ”แƒ‘แƒก, แƒแƒกแƒ”แƒ•แƒ” แƒกแƒžแƒ”แƒชแƒ˜แƒแƒšแƒฃแƒ  inetd แƒ“แƒ”แƒ›แƒแƒœแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒฎแƒ”แƒšแƒก แƒฃแƒฌแƒงแƒแƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒฎแƒ แƒ˜แƒ“แƒแƒœ แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒข แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก.

แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜

แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒแƒ แƒ˜ แƒกแƒแƒ”แƒ แƒ—แƒ แƒกแƒแƒ™แƒ”แƒขแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ:

  • แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“, แƒฏแƒ”แƒ  แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก (แƒแƒœ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก) แƒ”แƒ แƒ—แƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ’แƒแƒœ แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ–แƒ”;

  • แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒแƒ“: แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒจแƒ”แƒฅแƒ›แƒœแƒ˜แƒšแƒ˜แƒ แƒ˜แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒแƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒแƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“.

แƒกแƒ”แƒฅแƒชแƒ˜แƒ 44.8 แƒฃแƒ™แƒ•แƒ” แƒ›แƒแƒฌแƒแƒ“แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ FIFO แƒ แƒ˜แƒ’แƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ˜.

แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ’แƒแƒ แƒช แƒฌแƒ”แƒกแƒ˜, แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ˜แƒ› แƒกแƒ˜แƒขแƒฃแƒแƒชแƒ˜แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒกแƒฌแƒ แƒแƒคแƒแƒ“ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ“แƒ”แƒก, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก แƒฃแƒœแƒ“แƒ แƒ“แƒแƒ”แƒšแƒแƒ“แƒแƒก, แƒกแƒแƒœแƒแƒ› แƒกแƒฎแƒ•แƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ”แƒ‘แƒก แƒ›แƒแƒ”แƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒแƒœ. แƒแƒ› แƒ›แƒ˜แƒ“แƒ’แƒแƒ›แƒ˜แƒก แƒกแƒแƒ”แƒ แƒ—แƒ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒกแƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒจแƒแƒ แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒชแƒ•แƒšแƒ.

แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒกแƒแƒคแƒ”แƒ แƒ˜แƒกแƒ˜แƒ แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ”แƒ‘แƒจแƒ˜, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒแƒก แƒ“แƒ˜แƒ“แƒ˜ แƒ“แƒ แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒก, แƒแƒœ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒกแƒ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒแƒฅแƒ•แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒ˜ แƒ’แƒแƒชแƒ•แƒšแƒ. แƒแƒ› แƒ—แƒแƒ•แƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒแƒ“ แƒงแƒฃแƒ แƒแƒ“แƒฆแƒ”แƒ‘แƒแƒก แƒ’แƒแƒ•แƒแƒ›แƒแƒฎแƒ•แƒ˜แƒšแƒ”แƒ‘แƒ— แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒขแƒ แƒแƒ“แƒ˜แƒชแƒ˜แƒฃแƒš (แƒ“แƒ แƒฃแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒก) แƒ’แƒ–แƒแƒ–แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ แƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ. แƒแƒกแƒ”แƒ—แƒ˜ แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒ”แƒš แƒกแƒแƒ›แƒฃแƒจแƒแƒแƒก, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒกแƒ แƒฃแƒšแƒ“แƒ”แƒ‘แƒ. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ”แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜ แƒ“แƒแƒ›แƒแƒฃแƒ™แƒ˜แƒ“แƒ”แƒ‘แƒšแƒแƒ“ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก, แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ แƒ”แƒ แƒ—แƒ“แƒ แƒแƒฃแƒšแƒแƒ“ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒแƒ›แƒกแƒแƒฎแƒฃแƒ แƒ”แƒ‘แƒ. แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก (แƒ›แƒจแƒแƒ‘แƒšแƒ˜แƒก) แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒแƒ›แƒแƒชแƒแƒœแƒแƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒชแƒแƒšแƒ™แƒ” แƒ‘แƒแƒ•แƒจแƒ•แƒ˜แƒก แƒจแƒ”แƒฅแƒ›แƒœแƒ (แƒแƒšแƒขแƒ”แƒ แƒœแƒแƒขแƒ˜แƒฃแƒšแƒแƒ“, แƒžแƒ แƒแƒชแƒ”แƒกแƒ”แƒ‘แƒ˜แƒก แƒœแƒแƒชแƒ•แƒšแƒแƒ“, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ˜แƒก แƒซแƒแƒคแƒ”แƒ‘แƒ˜).

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒจแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒฎแƒ˜แƒšแƒแƒ•แƒ— แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒข แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒ“แƒ แƒžแƒแƒ แƒแƒšแƒ”แƒšแƒฃแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ’แƒแƒšแƒ˜แƒ—แƒ”แƒ‘แƒก. แƒ”แƒก แƒแƒ แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ”แƒ‘แƒฃแƒš แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก (RFC 862), แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒกแƒšแƒก.

echo iteration udp แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜

แƒแƒ› แƒ“แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒฌแƒแƒ แƒ›แƒแƒ’แƒ˜แƒ“แƒ’แƒ”แƒœแƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒก echo แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ˜แƒก แƒฎแƒ”แƒšแƒ›แƒ˜แƒกแƒแƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒ แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ”แƒ  7-แƒ–แƒ” แƒ“แƒ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒก แƒ แƒแƒ’แƒแƒ แƒช UDP, แƒแƒกแƒ”แƒ•แƒ” TCP-แƒ–แƒ” (แƒ”แƒก แƒžแƒแƒ แƒขแƒ˜ แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒแƒ›แƒ˜แƒขแƒแƒ› แƒ”แƒฅแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒฃแƒœแƒ“แƒ แƒ˜แƒงแƒแƒก แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ“แƒ›แƒ˜แƒœแƒ˜แƒกแƒขแƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒžแƒ แƒ˜แƒ•แƒ˜แƒšแƒ”แƒ’แƒ˜แƒ”แƒ‘แƒ˜แƒ—).

echo UDP แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒฃแƒ“แƒ›แƒ˜แƒ•แƒแƒ“ แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ แƒแƒ›แƒแƒก แƒ“แƒ แƒฃแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒ›แƒแƒ— แƒแƒกแƒšแƒก แƒ’แƒแƒ›แƒ’แƒ–แƒแƒ•แƒœแƒก. แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ”แƒ แƒ—แƒ˜ แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ แƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ, แƒแƒฅ แƒกแƒแƒ™แƒ›แƒแƒ แƒ˜แƒกแƒ˜ แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒแƒ แƒฅแƒ˜แƒขแƒ”แƒฅแƒขแƒฃแƒ แƒ. แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒกแƒ˜แƒแƒจแƒ˜ 56.1-XNUMX.

แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ 56.1. แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก id_echo_sv.c แƒ“แƒ id_echo_cl.c

#include "inet_sockets.h" /* แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒก แƒฉแƒ•แƒ”แƒœแƒ˜ แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒก */
#include "tlpi_hdr.h"

#define SERVICE "echo" /* UDP แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜ */

#define BUF_SIZE 500 /* แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒ˜ แƒ–แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ˜แƒงแƒแƒก
แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒ˜แƒ™แƒ˜แƒ—แƒฎแƒแƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒ“แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ */
________________________________________________________________________________ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜/id_echo.h

แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ 56.2-XNUMX แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒแƒก. แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜ แƒžแƒฃแƒœแƒฅแƒขแƒ”แƒ‘แƒ˜:

  • แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ“แƒ”แƒ›แƒแƒœแƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒจแƒ˜ แƒ’แƒแƒ“แƒแƒกแƒแƒงแƒ•แƒแƒœแƒแƒ“, แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— 37.2 แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก beneDaemon() แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒก;

  • แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒฃแƒคแƒ แƒ แƒ™แƒแƒ›แƒžแƒแƒฅแƒขแƒฃแƒ แƒ˜ แƒ แƒแƒ› แƒ’แƒแƒ•แƒฎแƒแƒ“แƒแƒ—, แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— 55.12 แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜ แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒš แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒข แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒแƒก;

  • แƒ—แƒฃ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ•แƒ”แƒ  แƒฃแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒก แƒžแƒแƒกแƒฃแƒฎแƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒก, แƒ˜แƒก แƒฌแƒ”แƒ แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒจแƒ˜ syslog() แƒ–แƒแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—.

แƒ แƒ”แƒแƒšแƒฃแƒ  แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒแƒจแƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ“แƒ˜แƒ“แƒ˜ แƒแƒšแƒ‘แƒแƒ—แƒแƒ‘แƒ˜แƒ— แƒ“แƒแƒ•แƒแƒฌแƒ”แƒกแƒ”แƒ‘แƒ— แƒ’แƒแƒ แƒ™แƒ•แƒ”แƒฃแƒš แƒจแƒ”แƒ–แƒฆแƒฃแƒ“แƒ•แƒแƒก syslog()-แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ— แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒก แƒกแƒ˜แƒฎแƒจแƒ˜แƒ แƒ”แƒ–แƒ”. แƒ”แƒก แƒ’แƒแƒ›แƒแƒ แƒ˜แƒชแƒฎแƒแƒ•แƒก แƒ—แƒแƒ•แƒ“แƒแƒ›แƒกแƒฎแƒ›แƒ”แƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒกแƒ˜แƒกแƒขแƒ”แƒ›แƒ˜แƒก แƒŸแƒฃแƒ แƒœแƒแƒšแƒ˜แƒก แƒ’แƒแƒ“แƒแƒคแƒแƒ แƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒแƒก. แƒแƒกแƒ”แƒ•แƒ”, แƒ’แƒแƒ˜แƒ—แƒ•แƒแƒšแƒ˜แƒกแƒฌแƒ˜แƒœแƒ”แƒ—, แƒ แƒแƒ› แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ syslog() แƒ–แƒแƒ แƒ˜ แƒกแƒแƒ™แƒ›แƒแƒแƒ“ แƒซแƒ•แƒ˜แƒ แƒ˜แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ˜แƒก แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก fsync() แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“.

แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ 56.2. แƒ’แƒแƒœแƒ›แƒ”แƒแƒ แƒ”แƒ‘แƒ˜แƒ—แƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก echo UDP แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก

_________________________________________________________________ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜/id_echo_sv.c
#แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก
#include "id_echo.h"
#include "become_daemon.h"

int
แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ (int argc, char *argv[])
{
int sfd;
ssize_t numRead;
socklen_tlen;
struct sockaddr_storage claddr;
แƒฉแƒแƒ แƒ‘แƒฃแƒคแƒ˜[BUF_SIZE];
char adrStr[IS_ADDR_STR_LEN];

แƒ—แƒฃ (แƒ’แƒแƒฎแƒ“แƒ˜ Daemon(0) == -1)
errExit ("แƒ’แƒแƒฎแƒ“แƒ˜ Daemon");

sfd = inetBind(SERVICE, SOCK_DGRAM, NULL);
แƒ—แƒฃ (sfd == -1) {
syslog(LOG_ERR, "แƒ•แƒ”แƒ  แƒจแƒ”แƒ˜แƒฅแƒ›แƒœแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜ (%s)",
แƒกแƒขแƒ แƒ”แƒ แƒแƒ แƒ˜ (แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ));
แƒ’แƒแƒกแƒ•แƒšแƒ (EXIT_FAILURE);

/* แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ“แƒแƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ— แƒแƒกแƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก */
}
for(;;) {
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),
แƒกแƒขแƒ แƒ”แƒ แƒแƒ แƒ˜ (แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ));
}
}
_________________________________________________________________ แƒกแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜/id_echo_sv.c

แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒแƒก 56.3 แƒกแƒ˜แƒแƒจแƒ˜ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒšแƒแƒ“. แƒ˜แƒก แƒแƒกแƒ”แƒ•แƒ” แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒœแƒ”แƒข แƒ“แƒแƒ›แƒ”แƒœแƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ 55.12 แƒ’แƒแƒœแƒงแƒแƒคแƒ˜แƒšแƒ”แƒ‘แƒแƒจแƒ˜. แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜แƒก แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ–แƒ” แƒžแƒ˜แƒ แƒ•แƒ”แƒš แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒแƒ“ แƒ˜แƒฆแƒ”แƒ‘แƒก แƒฅแƒกแƒ”แƒšแƒ˜แƒก แƒฐแƒแƒกแƒขแƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒก, แƒกแƒแƒ“แƒแƒช แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜ แƒ›แƒ“แƒ”แƒ‘แƒแƒ แƒ”แƒแƒ‘แƒก. แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒจแƒ”แƒ›แƒแƒ“แƒ˜แƒก แƒ›แƒแƒ แƒงแƒฃแƒŸแƒจแƒ˜, แƒกแƒแƒ“แƒแƒช แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ“แƒแƒ แƒฉแƒ”แƒœแƒ˜แƒš แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒชแƒแƒšแƒ™แƒ”แƒฃแƒšแƒ˜ แƒ“แƒแƒขแƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ™แƒ˜ แƒ™แƒ˜แƒ—แƒฎแƒฃแƒšแƒแƒ‘แƒก แƒ“แƒ แƒžแƒแƒกแƒฃแƒฎแƒแƒ“ แƒ’แƒแƒ›แƒแƒกแƒชแƒ”แƒ›แƒก แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒ“แƒแƒœ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒš แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ แƒแƒ›แƒแƒก.

แƒฉแƒแƒ›แƒแƒœแƒแƒ—แƒ•แƒแƒšแƒ˜ 56.3. แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ echo UDP แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก

#include "id_echo.h"

int
แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ (int argc, char *argv[])
{
int sfd,j;
แƒ–แƒแƒ›แƒ_แƒขแƒšแƒ”แƒœ;
ssize_t numRead;
แƒฉแƒแƒ แƒ‘แƒฃแƒคแƒ˜[BUF_SIZE];

if (argc < 2 || strcmp(argv[1], "--help") == 0)
usageErr("%s แƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒ”แƒšแƒ˜ msgโ€ฆn", argv[0]);

/* แƒจแƒ”แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜ แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” */
sfd = inetConnect(argv[1], SERVICE, SOCK_DGRAM);
แƒ—แƒฃ (sfd == -1)
fatal ("แƒ•แƒ”แƒ  แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ˜แƒก แƒกแƒแƒ™แƒ”แƒขแƒ—แƒแƒœ");

/* แƒ“แƒแƒœแƒแƒ แƒฉแƒ”แƒœแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ แƒกแƒ”แƒ แƒ•แƒ”แƒ แƒ–แƒ” แƒชแƒแƒšแƒ™แƒ” แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ— */
for (j = 2; j < argc; j++) {
len = strlen(argv[j]);
แƒ—แƒฃ (แƒ“แƒแƒฌแƒ”แƒ แƒ”แƒ—(sfd, argv[j], len) != len)
แƒกแƒแƒ‘แƒ”แƒ“แƒ˜แƒกแƒฌแƒ”แƒ แƒ ("แƒœแƒแƒฌแƒ˜แƒšแƒแƒ‘แƒ แƒ˜แƒ•แƒ˜ / แƒฌแƒแƒ แƒฃแƒ›แƒแƒขแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒฉแƒแƒฌแƒ”แƒ แƒ");

numRead = แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ (sfd, buf, BUF_SIZE);
แƒ—แƒฃ (numRead == -1)
errExit ("แƒฌแƒแƒ™แƒ˜แƒ—แƒฎแƒ•แƒ");
printf("[%ld bytes] %.*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 localhost แƒœแƒแƒฎแƒ•แƒแƒ›แƒ“แƒ˜แƒก // แƒ”แƒก แƒ™แƒšแƒ˜แƒ”แƒœแƒขแƒ˜ แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒ”แƒ แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒแƒ’แƒ แƒแƒ›แƒแƒก
[7 แƒ‘แƒแƒ˜แƒขแƒ˜] แƒœแƒแƒฎแƒ•แƒแƒ›แƒ“แƒ˜แƒก

แƒกแƒแƒกแƒ˜แƒแƒ›แƒแƒ•แƒœแƒ แƒ™แƒ˜แƒ—แƒฎแƒ•แƒแƒก แƒ’แƒ˜แƒกแƒฃแƒ แƒ•แƒ”แƒ‘แƒ—)

แƒฌแƒงแƒแƒ แƒ: linux.org.ru