Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 9

แƒกแƒขแƒแƒขแƒ˜แƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒ แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒฉแƒ”แƒ›แƒ˜ แƒ–แƒ”แƒœ แƒแƒ แƒฎแƒ˜.

แƒ“แƒฃแƒžแƒšแƒ”แƒฅแƒกแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ™แƒแƒ›แƒ˜

Mediastreamer2 VoIP แƒซแƒ แƒแƒ•แƒ˜แƒก แƒจแƒ”แƒกแƒฌแƒแƒ•แƒšแƒ. แƒœแƒแƒฌแƒ˜แƒšแƒ˜ 9

แฒ‘แƒแƒšแƒแƒก แƒ›แƒฃแƒฎแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒชแƒฎแƒแƒ“แƒ“แƒ แƒ“แƒฃแƒžแƒšแƒ”แƒฅแƒกแƒ˜แƒก แƒ˜แƒœแƒขแƒ”แƒ แƒ™แƒแƒ›แƒ˜ แƒ“แƒ แƒแƒ›แƒแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ—.

แƒ“แƒ˜แƒแƒ’แƒ แƒแƒ›แƒ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜แƒ แƒกแƒแƒ—แƒแƒฃแƒ แƒ˜แƒก แƒคแƒ˜แƒ’แƒฃแƒ แƒแƒจแƒ˜. แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒฅแƒ•แƒ”แƒ“แƒ แƒฏแƒแƒญแƒ•แƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ˜แƒก แƒ’แƒ–แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ แƒฎแƒ›แƒ˜แƒก แƒ‘แƒแƒ แƒแƒ—แƒ˜แƒ“แƒแƒœ. แƒ˜แƒก แƒฃแƒ–แƒ แƒฃแƒœแƒ•แƒ”แƒšแƒงแƒแƒคแƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒก แƒ›แƒ˜แƒ™แƒ แƒแƒคแƒแƒœแƒ˜แƒ“แƒแƒœ. แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“, แƒ”แƒก แƒฎแƒ“แƒ”แƒ‘แƒ แƒฌแƒแƒ›แƒจแƒ˜ 8000 แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒกแƒ˜แƒฉแƒฅแƒแƒ แƒ˜แƒ—. แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒ˜แƒขแƒ˜แƒก แƒกแƒ˜แƒฆแƒ แƒ›แƒ”, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ”แƒœ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜แƒก แƒแƒฃแƒ“แƒ˜แƒ แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜, แƒแƒ แƒ˜แƒก 16 แƒ‘แƒ˜แƒขแƒ˜ (แƒ”แƒก แƒแƒ  แƒแƒ แƒ˜แƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒแƒœแƒ˜; แƒ—แƒฃ แƒ’แƒกแƒฃแƒ แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ“แƒแƒฌแƒ”แƒ แƒแƒ— แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒ”แƒœ แƒฃแƒคแƒ แƒ แƒ›แƒแƒฆแƒแƒšแƒ˜ แƒ‘แƒ˜แƒขแƒ˜แƒก แƒกแƒ˜แƒฆแƒ แƒ›แƒ”แƒ–แƒ”). แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒแƒฏแƒ’แƒฃแƒคแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ 160 แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒ‘แƒšแƒแƒ™แƒแƒ“. แƒแƒ›แƒ แƒ˜แƒ’แƒแƒ“, แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ‘แƒšแƒแƒ™แƒ˜ แƒแƒ แƒ˜แƒก 320 แƒ‘แƒแƒ˜แƒขแƒ˜แƒก แƒ–แƒแƒ›แƒ. แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒฌแƒ•แƒ“แƒ˜แƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ’แƒแƒ›แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ, แƒแƒ แƒ˜แƒก "แƒ’แƒแƒ›แƒญแƒ•แƒ˜แƒ แƒ•แƒแƒšแƒ”" แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ” แƒ“แƒแƒ•แƒแƒ›แƒแƒขแƒ” แƒ˜แƒ› แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜, แƒ—แƒฃ แƒ’แƒแƒ›แƒแƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒ แƒแƒก แƒ“แƒแƒ˜แƒฆแƒแƒšแƒ”แƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒคแƒแƒœแƒ—แƒแƒœ แƒกแƒแƒฃแƒ‘แƒ แƒ˜แƒ— - แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒ— แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜ แƒ‘แƒ˜แƒšแƒ˜แƒ™แƒ˜แƒก "แƒ’แƒแƒ“แƒแƒฆแƒ”แƒ‘แƒแƒ–แƒ”" แƒขแƒแƒœแƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒ—.

แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜ แƒ’แƒแƒ“แƒแƒ“แƒ˜แƒก แƒ”แƒœแƒ™แƒแƒ“แƒ”แƒ แƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ แƒ“แƒแƒฅแƒ›แƒœแƒ˜แƒก แƒฉแƒ•แƒ”แƒœแƒก 16-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœ แƒœแƒ˜แƒ›แƒฃแƒจแƒ”แƒ‘แƒก ฮผ-แƒ™แƒแƒœแƒแƒœแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ— (G.711 แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒ˜) แƒ แƒ•แƒ แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ”แƒ‘แƒแƒ“. แƒ”แƒœแƒ™แƒแƒ“แƒ”แƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ–แƒ” แƒฉแƒ•แƒ”แƒœ แƒฃแƒ™แƒ•แƒ” แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒœแƒแƒฎแƒ”แƒ•แƒ แƒแƒ“ แƒ–แƒแƒ›แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ˜. แƒ–แƒแƒ’แƒแƒ“แƒแƒ“, แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ’แƒ•แƒ˜แƒซแƒšแƒ˜แƒ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒขแƒแƒœแƒแƒ— แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒ•แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”, แƒ—แƒฃ แƒแƒ  แƒ’แƒ•แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒขแƒ แƒแƒคแƒ˜แƒ™แƒ˜แƒก แƒจแƒ”แƒœแƒแƒฎแƒ•แƒ. แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒฅ แƒกแƒแƒกแƒแƒ แƒ’แƒ”แƒ‘แƒšแƒแƒ แƒ™แƒแƒ“แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ’แƒแƒœ Wireshark-แƒก แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒแƒฃแƒ“แƒ˜แƒแƒก แƒ แƒ”แƒžแƒ แƒแƒ“แƒฃแƒชแƒ˜แƒ แƒ”แƒ‘แƒ RTP แƒœแƒแƒ™แƒแƒ“แƒ˜แƒ“แƒแƒœ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ›แƒแƒจแƒ˜แƒœ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒ˜แƒก แƒจแƒ”แƒ™แƒฃแƒ›แƒจแƒฃแƒšแƒ˜แƒ ฮผ-แƒ™แƒแƒœแƒแƒœแƒ˜แƒก แƒแƒœ a-แƒ™แƒแƒœแƒแƒœแƒ˜แƒก แƒ›แƒ˜แƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—.

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

แƒคแƒ˜แƒšแƒขแƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒ”แƒ“แƒ แƒฏแƒแƒญแƒ•แƒ˜ แƒฅแƒ›แƒœแƒ˜แƒก แƒ›แƒ˜แƒ›แƒฆแƒ”แƒ‘ แƒ’แƒ–แƒแƒก; แƒฅแƒกแƒ”แƒšแƒ˜แƒ“แƒแƒœ แƒ›แƒ”แƒ“แƒ˜แƒ แƒกแƒขแƒ แƒ˜แƒ›แƒ”แƒ แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ RTP แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒจแƒ”แƒ“แƒ˜แƒแƒœ rtprecv แƒคแƒ˜แƒšแƒขแƒ แƒจแƒ˜, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒ›แƒแƒ•แƒแƒšแƒ–แƒ” แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ’แƒแƒ›แƒแƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒšแƒแƒ™แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒฎแƒ˜แƒ—, แƒ แƒแƒ›แƒ”แƒšแƒ—แƒแƒ’แƒแƒœ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒจแƒ”แƒ”แƒกแƒแƒ‘แƒแƒ›แƒ”แƒ‘แƒ แƒ”แƒ แƒ— แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒš แƒžแƒแƒ™แƒ”แƒขแƒก. แƒ‘แƒšแƒแƒ™แƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ”แƒ‘แƒก; แƒฌแƒ˜แƒœแƒ แƒกแƒขแƒแƒขแƒ˜แƒแƒจแƒ˜ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒœแƒแƒฎแƒแƒขแƒ–แƒ” แƒ›แƒฌแƒ•แƒแƒœแƒ”แƒ“ แƒ˜แƒงแƒ แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜.

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

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

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

struct _app_vars
{
  int  local_port;              /* ะ›ะพะบะฐะปัŒะฝั‹ะน ะฟะพั€ั‚. */
  int  remote_port;             /* ะŸะพั€ั‚ ะฟะตั€ะตะณะพะฒะพั€ะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ ะฝะฐ ัƒะดะฐะปะตะฝะฝะพะผ ะบะพะผะฟัŒัŽั‚ะตั€ะต. */
  char remote_addr[128];        /* IP-ะฐะดั€ะตั ัƒะดะฐะปะตะฝะฝะพะณะพ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ. */
  MSDtmfGenCustomTone dtmf_cfg; /* ะะฐัั‚ั€ะพะนะบะธ ั‚ะตัั‚ะพะฒะพะณะพ ัะธะณะฝะฐะปะฐ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
};

typedef struct _app_vars app_vars;

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

/* ะคัƒะฝะบั†ะธั ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธั ะฐั€ะณัƒะผะตะฝั‚ะพะฒ ะบะพะผะฐะฝะดะฝะพะน ัั‚ั€ะพะบะธ ะฒ
* ะฝะฐัั‚ั€ะพะนะบะธ ะฟั€ะพะณั€ะฐะผะผั‹. */
void  scan_args(int argc, char *argv[], app_vars *v)
{
    char i;
    for (i=0; i<argc; i++)
    {
        if (!strcmp(argv[i], "--help"))
        {
            char *p=argv[0]; p=p + 2;
            printf("  %s walkie talkienn", p);
            printf("--help      List of options.n");
            printf("--version   Version of application.n");
            printf("--addr      Remote abonent IP address string.n");
            printf("--port      Remote abonent port number.n");
            printf("--lport     Local port number.n");
            printf("--gen       Generator frequency.n");
            exit(0);
        }

        if (!strcmp(argv[i], "--version"))
        {
            printf("0.1n");
            exit(0);
        }

        if (!strcmp(argv[i], "--addr"))
        {
            strncpy(v->remote_addr, argv[i+1], 16);
            v->remote_addr[16]=0;
            printf("remote addr: %sn", v->remote_addr);
        }

        if (!strcmp(argv[i], "--port"))
        {
            v->remote_port=atoi(argv[i+1]);
            printf("remote port: %in", v->remote_port);
        }

        if (!strcmp(argv[i], "--lport"))
        {
            v->local_port=atoi(argv[i+1]);
            printf("local port : %in", v->local_port);
        }

        if (!strcmp(argv[i], "--gen"))
        {
            v -> dtmf_cfg.frequencies[0] = atoi(argv[i+1]);
                printf("gen freq : %in", v -> dtmf_cfg.frequencies[0]);
        }
    }
}

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

แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒก แƒ”แƒก แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒ•แƒ”แƒ‘แƒ˜ แƒ“แƒแƒกแƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒ แƒ—แƒแƒ•แƒ˜แƒกแƒ˜ แƒ“แƒ˜แƒ–แƒแƒ˜แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒ; แƒ แƒแƒขแƒแƒ›แƒฆแƒแƒช แƒ›แƒแƒก แƒแƒ  แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ 16 แƒฌแƒแƒ›แƒ–แƒ” แƒ›แƒ”แƒขแƒ˜ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ˜แƒก แƒกแƒ˜แƒ’แƒœแƒแƒšแƒ˜แƒก แƒฌแƒแƒ แƒ›แƒแƒ”แƒ‘แƒ. แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, แƒ แƒแƒ› แƒ›แƒ˜แƒกแƒ˜ แƒฎแƒแƒœแƒ’แƒ แƒซแƒšแƒ˜แƒ•แƒแƒ‘แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ 32-แƒ‘แƒ˜แƒขแƒ˜แƒแƒœแƒ˜ แƒœแƒแƒ›แƒ แƒ˜แƒ—.

แƒ›แƒ—แƒ”แƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ แƒแƒกแƒ” แƒ’แƒแƒ›แƒแƒ˜แƒงแƒฃแƒ แƒ”แƒ‘แƒ:

/* ะคะฐะนะป mstest8.c ะ˜ะผะธั‚ะฐั‚ะพั€ ะฟะตั€ะตะณะพะฒะพั€ะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ. */

#include <mediastreamer2/mssndcard.h>
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/msrtp.h>

/* ะŸะพะดะบะปัŽั‡ะฐะตะผ ั„ะฐะนะป ะพะฑั‰ะธั… ั„ัƒะฝะบั†ะธะน. */
#include "mstest_common.c"

/*----------------------------------------------------------*/
struct _app_vars
{
    int  local_port;              /* ะ›ะพะบะฐะปัŒะฝั‹ะน ะฟะพั€ั‚. */
    int  remote_port;             /* ะŸะพั€ั‚ ะฟะตั€ะตะณะพะฒะพั€ะฝะพะณะพ ัƒัั‚ั€ะพะนัั‚ะฒะฐ ะฝะฐ ัƒะดะฐะปะตะฝะฝะพะผ ะบะพะผะฟัŒัŽั‚ะตั€ะต. */
    char remote_addr[128];        /* IP-ะฐะดั€ะตั ัƒะดะฐะปะตะฝะฝะพะณะพ ะบะพะผะฟัŒัŽั‚ะตั€ะฐ. */
    MSDtmfGenCustomTone dtmf_cfg; /* ะะฐัั‚ั€ะพะนะบะธ ั‚ะตัั‚ะพะฒะพะณะพ ัะธะณะฝะฐะปะฐ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
};

typedef struct _app_vars app_vars;

/*----------------------------------------------------------*/
/* ะกะพะทะดะฐะตะผ ะดัƒะฟะปะตะบัะฝัƒัŽ RTP-ัะตััะธัŽ. */
RtpSession* create_duplex_rtp_session(app_vars v)
{
    RtpSession *session = create_rtpsession (v.local_port, v.local_port + 1, FALSE, RTP_SESSION_SENDRECV);
    rtp_session_set_remote_addr_and_port(session, v.remote_addr, v.remote_port, v.remote_port + 1);
    rtp_session_set_send_payload_type(session, PCMU);
    return session;
}

/*----------------------------------------------------------*/
/* ะคัƒะฝะบั†ะธั ะฟั€ะตะพะฑั€ะฐะทะพะฒะฐะฝะธั ะฐั€ะณัƒะผะตะฝั‚ะพะฒ ะบะพะผะฐะฝะดะฝะพะน ัั‚ั€ะพะบะธ ะฒ
* ะฝะฐัั‚ั€ะพะนะบะธ ะฟั€ะพะณั€ะฐะผะผั‹. */
void  scan_args(int argc, char *argv[], app_vars *v)
{
    char i;
    for (i=0; i<argc; i++)
    {
        if (!strcmp(argv[i], "--help"))
        {
            char *p=argv[0]; p=p + 2;
            printf("  %s walkie talkienn", p);
            printf("--help      List of options.n");
            printf("--version   Version of application.n");
            printf("--addr      Remote abonent IP address string.n");
            printf("--port      Remote abonent port number.n");
            printf("--lport     Local port number.n");
            printf("--gen       Generator frequency.n");
            exit(0);
        }

        if (!strcmp(argv[i], "--version"))
        {
            printf("0.1n");
            exit(0);
        }

        if (!strcmp(argv[i], "--addr"))
        {
            strncpy(v->remote_addr, argv[i+1], 16);
            v->remote_addr[16]=0;
            printf("remote addr: %sn", v->remote_addr);
        }

        if (!strcmp(argv[i], "--port"))
        {
            v->remote_port=atoi(argv[i+1]);
            printf("remote port: %in", v->remote_port);
        }

        if (!strcmp(argv[i], "--lport"))
        {
            v->local_port=atoi(argv[i+1]);
            printf("local port : %in", v->local_port);
        }

        if (!strcmp(argv[i], "--gen"))
        {
            v -> dtmf_cfg.frequencies[0] = atoi(argv[i+1]);
                printf("gen freq : %in", v -> dtmf_cfg.frequencies[0]);
        }
    }
}

/*----------------------------------------------------------*/
int main(int argc, char *argv[])
{
    /* ะฃัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฝะฐัั‚ั€ะพะนะบะธ ะฟะพ ัƒะผะพะปั‡ะฐะฝะธัŽ. */
    app_vars vars={5004, 7010, "127.0.0.1", {0}};

    /* ะฃัั‚ะฐะฝะฐะฒะปะธะฒะฐะตะผ ะฝะฐัั‚ั€ะพะนะบะธ ะฝะฐัั‚ั€ะพะนะบะธ ะฟั€ะพะณั€ะฐะผะผั‹ ะฒ
     * ัะพะพั‚ะฒะตั‚ัั‚ะฒะธะธ ั ะฐั€ะณัƒะผะตะฝั‚ะฐะผะธ ะบะพะผะฐะฝะดะฝะพะน ัั‚ั€ะพะบะธ. */
    scan_args(argc, argv, &vars);

    ms_init();

    /* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปัั€ั‹ ั„ะธะปัŒั‚ั€ะพะฒ ะฟะตั€ะตะดะฐัŽั‰ะตะณะพ ั‚ั€ะฐะบั‚ะฐ. */
    MSSndCard *snd_card =
        ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
    MSFilter *snd_card_read = ms_snd_card_create_reader(snd_card);
    MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
    MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);

    /* ะกะพะทะดะฐะตะผ ั„ะธะปัŒั‚ั€ ะบะพะดะตั€ะฐ. */
    MSFilter *encoder = ms_filter_create_encoder("PCMU");

    /* ะ ะตะณะธัั‚ั€ะธั€ัƒะตะผ ั‚ะธะฟั‹ ะฝะฐะณั€ัƒะทะบะธ. */
    register_payloads();

    /* ะกะพะทะดะฐะตะผ ะดัƒะฟะปะตะบัะฝัƒัŽ RTP-ัะตััะธัŽ. */
    RtpSession* rtp_session= create_duplex_rtp_session(vars);
    ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, rtp_session);

    /* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟะตั€ะตะดะฐั‚ั‡ะธะบะฐ. */
    ms_filter_link(snd_card_read, 0, dtmfgen, 0);
    ms_filter_link(dtmfgen, 0, encoder, 0);
    ms_filter_link(encoder, 0, rtpsend, 0);

    /* ะกะพะทะดะฐะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟั€ะธะตะผะฝะพะณะพ ั‚ั€ะฐะบั‚ะฐ. */
    MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);
    ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rtp_session);

    /* ะกะพะทะดะฐะตะผ ั„ะธะปัŒั‚ั€ ะดะตะบะพะดะตั€ะฐ, */
    MSFilter *decoder=ms_filter_create_decoder("PCMU");

    /* ะกะพะทะดะฐะตะผ ั„ะธะปัŒั‚ั€ ะทะฒัƒะบะพะฒะพะน ะบะฐั€ั‚ั‹. */
    MSFilter *snd_card_write = ms_snd_card_create_writer(snd_card);

    /* ะกะพะตะดะธะฝัะตะผ ั„ะธะปัŒั‚ั€ั‹ ะฟั€ะธั‘ะผะฝะพะณะพ ั‚ั€ะฐะบั‚ะฐ. */
    ms_filter_link(rtprecv, 0, decoder, 0);
    ms_filter_link(decoder, 0,  snd_card_write, 0);

    /* ะกะพะทะดะฐะตะผ ะธัั‚ะพั‡ะฝะธะบ ั‚ะฐะบั‚ะพะฒ - ั‚ะธะบะตั€. */
    MSTicker *ticker = ms_ticker_new();

    /* ะŸะพะดะบะปัŽั‡ะฐะตะผ ะธัั‚ะพั‡ะฝะธะบ ั‚ะฐะบั‚ะพะฒ. */
    ms_ticker_attach(ticker, snd_card_read);
    ms_ticker_attach(ticker, rtprecv);

    /* ะ•ัะปะธ ะฝะฐัั‚ั€ะพะนะบะฐ ั‡ะฐัั‚ะพั‚ั‹ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ ะพั‚ะปะธั‡ะฝะฐ ะพั‚ ะฝัƒะปั, ั‚ะพ ะทะฐะฟัƒัะบะฐะตะผ ะณะตะฝะตั€ะฐั‚ะพั€. */   
    if (vars.dtmf_cfg.frequencies[0])
    {
        /* ะะฐัั‚ั€ะฐะธะฒะฐะตะผ ัั‚ั€ัƒะบั‚ัƒั€ัƒ, ัƒะฟั€ะฐะฒะปััŽั‰ัƒัŽ ะฒั‹ั…ะพะดะฝั‹ะผ ัะธะณะฝะฐะปะพะผ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
        vars.dtmf_cfg.duration = 10000;
        vars.dtmf_cfg.amplitude = 1.0;
    }

    /* ะžั€ะณะฐะฝะธะทัƒะตะผ ั†ะธะบะป ะฟะตั€ะตะทะฐะฟัƒัะบะฐ ะณะตะฝะตั€ะฐั‚ะพั€ะฐ. */
    while(TRUE)
    {
        if(vars.dtmf_cfg.frequencies[0])
        {
            /* ะ’ะบะปัŽั‡ะฐะตะผ ะทะฒัƒะบะพะฒะพะน ะณะตะฝะตั€ะฐั‚ะพั€. */
            ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM,
                    (void*)&vars.dtmf_cfg);
        }
        /* ะฃะบะปะฐะดั‹ะฒะฐะตะผ ั‚ั€ะตะด ะฒ ัะฟัั‡ะบัƒ ะฝะฐ 20ะผั, ั‡ั‚ะพะฑั‹ ะดั€ัƒะณะธะต ั‚ั€ะตะดั‹
         * ะฟั€ะธะปะพะถะตะฝะธั ะฟะพะปัƒั‡ะธะปะธ ะฒั€ะตะผั ะฝะฐ ั€ะฐะฑะพั‚ัƒ. */
        ms_usleep(20000);
    }
}

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

$ sudo tshark -i lo -f "udp dst port 7010" -P -V -O RTP -o rtp.heuristic_rtp:TRUE -x

แƒ—แƒฃ แƒ™แƒแƒœแƒกแƒแƒšแƒจแƒ˜ แƒ’แƒแƒจแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ•แƒ”แƒšแƒ˜ แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒก แƒจแƒ”แƒขแƒงแƒแƒ‘แƒ˜แƒœแƒ”แƒ‘แƒแƒก แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ’แƒแƒ“แƒแƒฆแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒฌแƒงแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ›แƒแƒจแƒ˜แƒœ แƒ”แƒก แƒ™แƒแƒ แƒ’แƒ˜ แƒœแƒ˜แƒจแƒแƒœแƒ˜แƒ - แƒ”แƒก แƒœแƒ˜แƒจแƒœแƒแƒ•แƒก, แƒ แƒแƒ› แƒฉแƒ•แƒ”แƒœแƒ˜ แƒžแƒแƒ แƒขแƒ˜, แƒกแƒแƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ“, แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ”แƒ‘แƒ˜แƒ— แƒแƒ  แƒแƒ แƒ˜แƒก แƒ“แƒแƒ™แƒแƒ•แƒ”แƒ‘แƒฃแƒšแƒ˜. แƒกแƒฎแƒ•แƒ แƒขแƒ”แƒ แƒ›แƒ˜แƒœแƒแƒšแƒจแƒ˜ แƒฉแƒ•แƒ”แƒœ แƒ•แƒ˜แƒฌแƒงแƒ”แƒ‘แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒแƒœแƒชแƒ˜แƒแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒแƒฎแƒ“แƒ”แƒœแƒก "แƒ“แƒ˜แƒกแƒขแƒแƒœแƒชแƒ˜แƒฃแƒ แƒ˜" แƒ˜แƒœแƒขแƒ”แƒ แƒ™แƒแƒ›แƒ˜แƒก แƒกแƒ˜แƒ›แƒฃแƒšแƒแƒชแƒ˜แƒแƒก แƒแƒ› แƒžแƒแƒ แƒขแƒ˜แƒก แƒœแƒแƒ›แƒ แƒ˜แƒก แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒ˜แƒ—:

$ ./mstest8 --port 9010 --lport 7010

แƒ แƒแƒ’แƒแƒ แƒช แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒขแƒ”แƒฅแƒกแƒขแƒ˜แƒ“แƒแƒœ แƒฉแƒแƒœแƒก, แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ IP แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ˜แƒ 127.0.0.1 (แƒšแƒแƒ™แƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒ แƒงแƒฃแƒŸแƒ˜).

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

$ ./mstest8  --port 7010 --lport 9010 --gen 440

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

แƒ—แƒฃ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒกแƒ” แƒ›แƒแƒฎแƒ“แƒ, แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜, แƒ›แƒแƒจแƒ˜แƒœ แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒ— แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒ›แƒ”แƒแƒ แƒ” แƒแƒกแƒšแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜แƒกแƒ แƒ“แƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ” "-gen 440". แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒฎแƒšแƒ แƒ’แƒ”แƒœแƒ”แƒ แƒแƒขแƒแƒ แƒ˜แƒก แƒ แƒแƒšแƒก แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ—. แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒ›แƒ˜แƒ™แƒ แƒแƒคแƒแƒœแƒจแƒ˜ แƒฎแƒ›แƒแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒฃแƒจแƒ•แƒแƒ—, แƒจแƒ”แƒกแƒแƒ‘แƒแƒ›แƒ˜แƒกแƒ˜ แƒฎแƒ›แƒ แƒฃแƒœแƒ“แƒ แƒ’แƒแƒ˜แƒ’แƒแƒ— แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒ™แƒจแƒ˜ แƒแƒœ แƒงแƒฃแƒ แƒกแƒแƒกแƒ›แƒ”แƒœแƒจแƒ˜. แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ›แƒแƒฎแƒ“แƒ”แƒก แƒแƒ™แƒฃแƒกแƒขแƒ˜แƒ™แƒฃแƒ แƒ˜ แƒ—แƒ•แƒ˜แƒ—แƒแƒ’แƒ–แƒœแƒ”แƒ‘แƒแƒช แƒ™แƒ˜; แƒจแƒ”แƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ— แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒ™แƒ˜แƒก แƒฎแƒ›แƒ แƒ“แƒ แƒ”แƒคแƒ”แƒฅแƒขแƒ˜ แƒ’แƒแƒฅแƒ แƒ”แƒ‘แƒ.

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

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

แƒฌแƒงแƒแƒ แƒ: www.habr.com

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ