เชฒเซเชเชจเซ เชธเชพเชฎเชเซเชฐเซ เชฎเชพเชฐเชพ เชชเชฐเชฅเซ เชฒเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ
RTP เชชเซเชเซเชเซเชธเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ TShark เชจเซ เชเชชเชฏเซเช เชเชฐเชตเซ
เชเซเชฒเซเชฒเชพเชฎเชพเช
เช เชฒเซเชเชฎเชพเช, เช เชฎเซ RTP เชชเซเชฐเซเชเซเชเซเชฒเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเชกเชฟเช เชธเชฟเชเซเชจเชฒ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจเชจเซ เช เชญเซเชฏเชพเชธ เชเชฐเชตเชพเชจเซเช เชเชพเชฒเซ เชฐเชพเชเซเช เชเซเช. เชชเซเชฐเชฅเชฎ, เชเชพเชฒเซ เช เชฎเชพเชฐเซ เชเซเชธเซเช เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เช เชจเซ เชฐเซเชธเซเชตเชฐเชฎเชพเช เชตเชฟเชญเชพเชเซเชค เชเชฐเซเช เช เชจเซ เชจเซเชเชตเชฐเซเช เชเซเชฐเชพเชซเชฟเช เชตเชฟเชถเซเชฒเซเชทเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ RTP เชธเซเชเซเชฐเซเชฎเชจเซเช เชชเชฐเซเชเซเชทเชฃ เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซเช เชคเซ เชถเซเชเซเช.
เชคเซเชฅเซ, เช เชฎเซ เชตเชงเซ เชธเซเชชเชทเซเชเชชเชฃเซ เชเซเช เชถเชเซเช เชเซเช เชเซ เชเชฏเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชคเชคเซเชตเซ RTP เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ เช เชจเซ เชเชฏเชพ เชชเซเชฐเชพเชชเซเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชตเชพเชฌเชฆเชพเชฐ เชเซ, เช เชฎเซ เช เชฎเชพเชฐเซ mstest6.c เชซเชพเชเชฒเชจเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เช เชจเซ เชฐเซเชธเซเชตเชฐ เชฎเชพเชเซ เชฌเซ เชธเซเชตเชคเชเชคเซเชฐ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เชตเชฟเชญเชพเชเชฟเชค เชเชฐเซเช เชเซเช; เช เชฎเซ เชธเชพเชฎเชพเชจเซเชฏ เชเชพเชฐเซเชฏเซ เชฎเซเชเซเชถเซเช เชเซเชจเซ เชเชชเชฏเซเช เชฌเชเชจเซ เชเชฐเซ เชเซ. เชคเซเชฐเซเชเซ เชซเชพเชเชฒเชฎเชพเช, เชเซเชจเซ เชเชชเชฃเซ เชเซเชฒ เชเชฐเซเชถเซเช mstest_common.c, เชคเซ เชถเชพเชฎเซเชฒ เชจเชฟเชฐเซเชฆเซเชถเชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เช เชจเซ เชฐเซเชธเซเชตเชฐ เชฆเซเชตเชพเชฐเชพ เชเชจเซเชเซเช เชฅเชถเซ:
/* ะคะฐะนะป mstest_common.c ะะฑัะธะต ััะฝะบัะธะธ ะดะปั ะฟะตัะตะดะฐััะธะบะฐ ะธ ะฟัะธะตะผะฝะธะบะฐ. */
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msticker.h>
#include <mediastreamer2/msrtp.h>
#include <ortp/rtpsession.h>
#include <ortp/payloadtype.h>
define PCMU 0
/*---------------------------------------------------------*/
/* ะคัะฝะบัะธั ัะตะณะธัััะฐัะธะธ ัะธะฟะพะฒ ะฟะพะปะตะทะฝัั
ะฝะฐะณััะทะพะบ. */
void register_payloads(void)
{
/* ะ ะตะณะธัััะธััะตะผ ัะธะฟั ะฝะฐะณััะทะพะบ ะฒ ัะฐะฑะปะธัะต ะฟัะพัะธะปะตะน. ะะพะทะดะฝะตะต, ะฟะพ ะธะฝะดะตะบัั ะฒะทััะพะผั
ะธะท ะทะฐะณะพะปะพะฒะบะฐ RTP-ะฟะฐะบะตัะฐ ะธะท ััะพะน ัะฐะฑะปะธัั ะฑัะดัั ะธะทะฒะปะตะบะฐัััั ะฟะฐัะฐะผะตััั
ะฝะฐะณััะทะบะธ, ะฝะตะพะฑั
ะพะดะธะผัะต ะดะปั ะดะตะบะพะดะธัะพะฒะฐะฝะธั ะดะฐะฝะฝัั
ะฟะฐะบะตัะฐ. */
rtp_profile_set_payload (&av_profile, PCMU, &payload_type_pcm8000);
}
/*---------------------------------------------------------*/
/* ะญัะฐ ััะฝะบัะธั ัะพะทะดะฐะฝะฐ ะธะท ััะฝะบัะธะธ create_duplex_rtpsession() ะฒ audiostream.c ะผะตะดะธะฐัััะธะผะตัะฐ2. */
static RtpSession *create_rtpsession (int loc_rtp_port, int loc_rtcp_port, bool_t ipv6, RtpSessionMode mode)
{
RtpSession *rtpr; rtpr = rtp_session_new ((int) mode);
rtp_session_set_scheduling_mode (rtpr, 0);
rtp_session_set_blocking_mode (rtpr, 0);
rtp_session_enable_adaptive_jitter_compensation (rtpr, TRUE);
rtp_session_set_symmetric_rtp (rtpr, TRUE);
rtp_session_set_local_addr (rtpr, ipv6 ? "::" : "0.0.0.0", loc_rtp_port, loc_rtcp_port);
rtp_session_signal_connect (rtpr, "timestamp_jump", (RtpCallback) rtp_session_resync, 0);
rtp_session_signal_connect (rtpr, "ssrc_changed", (RtpCallback) rtp_session_resync, 0);
rtp_session_set_ssrc_changed_threshold (rtpr, 0);
rtp_session_set_send_payload_type(rtpr, PCMU);
/* ะะพ ัะผะพะปัะฐะฝะธั ะฒัะบะปััะฐะตะผ RTCP-ัะตััะธั, ัะฐะบ ะบะฐะบ ะฝะฐั ะฟัะปัั ะฝะต ะฑัะดะตั ะธัะฟะพะปัะทะพะฒะฐัั
ะตั. */
rtp_session_enable_rtcp (rtpr, FALSE);
return rtpr;
}
เชนเชตเซ เช เชฒเช เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชซเชพเชเชฒ:
/* ะคะฐะนะป mstest6.c ะะผะธัะฐัะพั ะฟัะปััะฐ ัะฟัะฐะฒะปะตะฝะธั (ะฟะตัะตะดะฐััะธะบะฐ). */
#include <mediastreamer2/dtmfgen.h>
#include <mediastreamer2/msrtp.h>
#include "mstest_common.c"
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปััั ัะธะปัััะพะฒ. */
MSFilter *voidsource = ms_filter_new(MS_VOID_SOURCE_ID);
MSFilter *dtmfgen = ms_filter_new(MS_DTMF_GEN_ID);
/* ะกะพะทะดะฐะตะผ ัะธะปััั ะบะพะดะตัะฐ. */
MSFilter *encoder = ms_filter_create_encoder("PCMU");
/* ะ ะตะณะธัััะธััะตะผ ัะธะฟั ะฝะฐะณััะทะบะธ. */
register_payloads();
/* ะกะพะทะดะฐะตะผ RTP-ัะตััะธั ะฟะตัะตะดะฐััะธะบะฐ. */
RtpSession *tx_rtp_session = create_rtpsession (8010, 8011, FALSE, RTP_SESSION_SENDONLY);
rtp_session_set_remote_addr_and_port(tx_rtp_session,"127.0.0.1", 7010, 7011);
rtp_session_set_send_payload_type(tx_rtp_session, PCMU);
MSFilter *rtpsend = ms_filter_new(MS_RTP_SEND_ID);
ms_filter_call_method(rtpsend, MS_RTP_SEND_SET_SESSION, tx_rtp_session);
/* ะกะพะทะดะฐะตะผ ะธััะพัะฝะธะบ ัะฐะบัะพะฒ - ัะธะบะตั. */
MSTicker *ticker_tx = ms_ticker_new();
/* ะกะพะตะดะธะฝัะตะผ ัะธะปัััั ะฟะตัะตะดะฐััะธะบะฐ. */
ms_filter_link(voidsource, 0, dtmfgen, 0);
ms_filter_link(dtmfgen, 0, encoder, 0);
ms_filter_link(encoder, 0, rtpsend, 0);
/* ะะพะดะบะปััะฐะตะผ ะธััะพัะฝะธะบ ัะฐะบัะพะฒ. */
ms_ticker_attach(ticker_tx, voidsource);
/* ะะฐัััะฐะธะฒะฐะตะผ ััััะบัััั, ัะฟัะฐะฒะปััััั ะฒัั
ะพะดะฝัะผ ัะธะณะฝะฐะปะพะผ ะณะตะฝะตัะฐัะพัะฐ. */
MSDtmfGenCustomTone dtmf_cfg;
dtmf_cfg.tone_name[0] = 0;
dtmf_cfg.duration = 1000;
dtmf_cfg.frequencies[0] = 440;
/* ะัะดะตะผ ะณะตะฝะตัะธัะพะฒะฐัั ะพะดะธะฝ ัะพะฝ, ัะฐััะพัั ะฒัะพัะพะณะพ ัะพะฝะฐ ัััะฐะฝะพะฒะธะผ ะฒ 0. */
dtmf_cfg.frequencies[1] = 0;
dtmf_cfg.amplitude = 1.0;
dtmf_cfg.interval = 0.;
dtmf_cfg.repeat_count = 0.;
/* ะัะณะฐะฝะธะทัะตะผ ัะธะบะป ัะบะฐะฝะธัะพะฒะฐะฝะธั ะฝะฐะถะฐััั
ะบะปะฐะฒะธั. ะะฒะพะด ะฝัะปั ะทะฐะฒะตััะฐะตั
* ัะธะบะป ะธ ัะฐะฑะพัั ะฟัะพะณัะฐะผะผั. */
char key='9';
printf("ะะฐะถะผะธัะต ะบะปะฐะฒะธัั ะบะพะผะฐะฝะดั, ะทะฐัะตะผ ะฒะฒะพะด.n"
"ะะปั ะทะฐะฒะตััะตะฝะธั ะฟัะพะณัะฐะผะผั ะฒะฒะตะดะธัะต 0.n");
while(key != '0')
{
key = getchar();
if ((key >= 49) && (key <= 54))
{
printf("ะัะฟัะฐะฒะปะตะฝะฐ ะบะพะผะฐะฝะดะฐ: %cn", key);
/* ะฃััะฐะฝะฐะฒะปะธะฒะฐะตะผ ัะฐััะพัั ะณะตะฝะตัะฐัะพัะฐ ะฒ ัะพะพัะฒะตัััะฒะธะธ ั
* ะบะพะดะพะผ ะฝะฐะถะฐัะพะน ะบะปะฐะฒะธัะธ. */
dtmf_cfg.frequencies[0] = 440 + 100*(key-49);
/* ะะบะปััะฐะตะผ ะทะฒัะบะพะฒะพะน ะณะตะฝะตัะฐัะพั c ะพะฑะฝะพะฒะปะตะฝะฝะพะน ัะฐััะพัะพะน. */
ms_filter_call_method(dtmfgen, MS_DTMF_GEN_PLAY_CUSTOM, (void*)&dtmf_cfg);
}
/* ะฃะบะปะฐะดัะฒะฐะตะผ ััะตะด ะฒ ัะฟััะบั ะฝะฐ 20ะผั, ััะพะฑั ะดััะณะธะต ััะตะดั
* ะฟัะธะปะพะถะตะฝะธั ะฟะพะปััะธะปะธ ะฒัะตะผั ะฝะฐ ัะฐะฑะพัั. */
ms_usleep(20000);
}
}
เช เชจเซ เช เชเชคเซ, เชฐเซเชธเซเชตเชฐ เชซเชพเชเชฒ:
/* ะคะฐะนะป mstest7.c ะะผะธัะฐัะพั ะฟัะธะตะผะฝะธะบะฐ. */
include <mediastreamer2/mssndcard.h>
include <mediastreamer2/mstonedetector.h>
include <mediastreamer2/msrtp.h>
/* ะะพะดะบะปััะฐะตะผ ะทะฐะณะพะปะพะฒะพัะฝัะน ัะฐะนะป ั ััะฝะบัะธัะผะธ ัะฟัะฐะฒะปะตะฝะธั ัะพะฑััะธัะผะธ ะผะตะดะธะฐัััะธะผะตัะฐ.*/
include <mediastreamer2/mseventqueue.h>
/* ะะพะดะบะปััะฐะตะผ ัะฐะนะป ะพะฑัะธั
ััะฝะบัะธะน. */
include "mstest_common.c"
/* ะคัะฝะบัะธั ะพะฑัะฐัะฝะพะณะพ ะฒัะทะพะฒะฐ, ะพะฝะฐ ะฑัะดะตั ะฒัะทะฒะฐะฝะฐ ัะธะปัััะพะผ, ะบะฐะบ ัะพะปัะบะพ ะพะฝ ะพะฑะฝะฐััะถะธั ัะพะฒะฟะฐะดะตะฝะธะต ั
ะฐัะฐะบัะตัะธััะธะบ ะฒั
ะพะดะฝะพะณะพ ัะธะณะฝะฐะปะฐ ั ะทะฐะดะฐะฝะฝัะผะธ. */
static void tone_detected_cb(void *data, MSFilter *f, unsigned int event_id,MSToneDetectorEvent *ev)
{
printf("ะัะธะฝััะฐ ะบะพะผะฐะฝะดะฐ: %sn", ev->tone_name);
}
/*----------------------------------------------------------*/
int main()
{
ms_init();
/* ะกะพะทะดะฐะตะผ ัะบะทะตะผะฟะปััั ัะธะปัััะพะฒ. */
MSSndCard *card_playback = ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
MSFilter *snd_card_write = ms_snd_card_create_writer(card_playback);
MSFilter *detector = ms_filter_new(MS_TONE_DETECTOR_ID);
/* ะัะธัะฐะตะผ ะผะฐััะธะฒ ะฝะฐั
ะพะดััะธะนัั ะฒะฝัััะธ ะดะตัะตะบัะพัะฐ ัะพะฝะพะฒ, ะพะฝ ะพะฟะธััะฒะฐะตั
* ะพัะพะฑัะต ะฟัะธะผะตัั ัะฐะทััะบะธะฒะฐะตะผัั
ัะธะณะฝะฐะปะพะฒ.*/
ms_filter_call_method(detector, MS_TONE_DETECTOR_CLEAR_SCANS, 0);
/* ะะพะดะบะปััะฐะตะผ ะบ ัะธะปัััั ััะฝะบัะธั ะพะฑัะฐัะฝะพะณะพ ะฒัะทะพะฒะฐ. */
ms_filter_set_notify_callback(detector, (MSFilterNotifyFunc)tone_detected_cb, NULL);
/* ะกะพะทะดะฐะตะผ ะผะฐััะธะฒ, ะบะฐะถะดัะน ัะปะตะผะตะฝั ะบะพัะพัะพะณะพ ะพะฟะธััะฒะฐะตั ั
ะฐัะฐะบัะตัะธััะธะบั
* ะพะดะฝะพะณะพ ะธะท ัะพะฝะพะฒ, ะบะพัะพััะน ััะตะฑัะตััั ะพะฑะฝะฐััะถะธะฒะฐัั:
ะขะตะบััะพะฒะพะต ะธะผั
* ะดะฐะฝะฝะพะณะพ ัะปะตะผะตะฝัะฐ, ัะฐััะพัะฐ ะฒ ะณะตััะฐั
, ะดะปะธัะตะปัะฝะพััั ะฒ ะผะธะปะปะธัะตะบัะฝะดะฐั
,
* ะผะธะฝะธะผะฐะปัะฝัะน ััะพะฒะตะฝั ะพัะฝะพัะธัะตะปัะฝะพ 0,775ะ. */
MSToneDetectorDef scan[6]=
{
{"V+",440, 100, 0.1}, /* ะะพะผะฐะฝะดะฐ "ะฃะฒะตะปะธัะธัั ะณัะพะผะบะพััั". */
{"V-",540, 100, 0.1}, /* ะะพะผะฐะฝะดะฐ "ะฃะผะตะฝััะธัั ะณัะพะผะบะพััั". */
{"C+",640, 100, 0.1}, /* ะะพะผะฐะฝะดะฐ "ะฃะฒะตะปะธัะธัั ะฝะพะผะตั ะบะฐะฝะฐะปะฐ". */
{"C-",740, 100, 0.1}, /* ะะพะผะฐะฝะดะฐ "ะฃะผะตะฝััะธัั ะฝะพะผะตั ะบะฐะฝะฐะปะฐ". */
{"ON",840, 100, 0.1}, /* ะะพะผะฐะฝะดะฐ "ะะบะปััะธัั ัะตะปะตะฒะธะทะพั". */
{"OFF", 940, 100, 0.1}/* ะะพะผะฐะฝะดะฐ "ะัะบะปััะธัั ัะตะปะตะฒะธะทะพั". */
};
/* ะะตัะตะดะฐะตะผ "ะฟัะธะผะตัั" ัะธะณะฝะฐะปะพะฒ ะดะตัะตะบัะพั ัะพะฝะพะฒ. */
int i;
for (i = 0; i < 6; i++)
{
ms_filter_call_method(detector, MS_TONE_DETECTOR_ADD_SCAN, &scan[i]);
}
/* ะกะพะทะดะฐะตะผ ัะธะปััั ะดะตะบะพะดะตัะฐ */
MSFilter *decoder=ms_filter_create_decoder("PCMU");
/* ะ ะตะณะธัััะธััะตะผ ัะธะฟั ะฝะฐะณััะทะบะธ. */
register_payloads();
/* ะกะพะทะดะฐะตะผ RTP-ัะตััะธั ะฟัะธะตะผะฝะธะบะฐ. */
MSFilter *rtprecv = ms_filter_new(MS_RTP_RECV_ID);
RtpSession *rx_rtp_session = create_rtpsession (7010, 7011, FALSE, RTP_SESSION_RECVONLY);
ms_filter_call_method(rtprecv, MS_RTP_RECV_SET_SESSION, rx_rtp_session);
/* ะกะพะทะดะฐะตะผ ะธััะพัะฝะธะบ ัะฐะบัะพะฒ - ัะธะบะตั. */
MSTicker *ticker_rx = ms_ticker_new();
/* ะกะพะตะดะธะฝัะตะผ ัะธะปัััั ะฟัะธัะผะฝะธะบะฐ. */
ms_filter_link(rtprecv, 0, decoder, 0);
ms_filter_link(decoder, 0, detector, 0);
ms_filter_link(detector, 0, snd_card_write, 0);
/* ะะพะดะบะปััะฐะตะผ ะธััะพัะฝะธะบ ัะฐะบัะพะฒ. */
ms_ticker_attach(ticker_rx, rtprecv);
char key='9';
printf( "ะะปั ะทะฐะฒะตััะตะฝะธั ะฟัะพะณัะฐะผะผั ะฒะฒะตะดะธัะต 0.n");
while(key != '0')
{
key = getchar();
/* ะฃะบะปะฐะดัะฒะฐะตะผ ััะตะด ะฒ ัะฟััะบั ะฝะฐ 20ะผั, ััะพะฑั ะดััะณะธะต ััะตะดั * ะฟัะธะปะพะถะตะฝะธั ะฟะพะปััะธะปะธ ะฒัะตะผั ะฝะฐ ัะฐะฑะพัั. */
ms_usleep(20000);
}
}
เช เชฎเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เช เชจเซ เชฐเซเชธเซเชตเชฐเชจเซ เชเชฎเซเชชเชพเชเชฒ เชเชฐเซเช เชเซเช, เชชเชเซ เชฆเชฐเซเชเชจเซ เชคเซเชจเชพ เชชเซเชคเชพเชจเชพ เชเชจเซเชธเซเชฒเชฎเชพเช เชฒเซเชเช เชเชฐเซเช เชเซเช. เชชเชเซ เชคเซ เชชเชนเซเชฒเชพเชจเซ เชเซเชฎ เชเชพเชฐเซเชฏ เชเชฐเชตเซเช เชเซเชเช - เชซเชเซเชค เชเชชเชฃเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชเชจเซเชธเซเชฒเชฎเชพเช 1 เชฅเซ 6 เชธเซเชงเซเชจเซ เชธเชเชเซเชฏเชพเช เชฆเชพเชเชฒ เชเชฐเชตเซ เชเซเชเช, เช เชจเซ เชคเซเชจเซ เชชเซเชฐเชคเชฟเชธเชพเชฆ เชฐเซเชธเซเชตเชฐ เชเชจเซเชธเซเชฒเชฎเชพเช เชฆเซเชเชพเชตเซ เชเซเชเช. เชธเซเชชเซเชเชฐเชฎเชพเช เชเซเชจ เชธเชพเชเชญเชณเซ เชถเชเชพเชฏ เชคเซเชตเชพ เชนเซเชตเชพ เชเซเชเช. เชเซ เชฌเชงเซเช เชเชตเซเช เชเซ, เชคเซ เช เชฎเซ เชฐเซเชธเซเชตเชฐ เช เชจเซ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชตเชเซเชเซ เชเซเชกเชพเชฃ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเซเชฏเซเช เชเซ - เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐเชฅเซ เชฐเซเชธเซเชตเชฐ เชธเซเชงเซ RTP เชชเซเชเซเชเซเชจเซเช เชธเชคเชค เชชเซเชฐเชธเชพเชฐเชฃ เชฅเชพเชฏ เชเซ.
เชนเชตเซ เชเซเชฐเชพเชซเชฟเช เชตเชฟเชถเซเชฒเซเชทเช เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพเชจเซ เชธเชฎเชฏ เชเซ; เช เชฎเชพเชเซ เช เชฎเซ เชเชคเซเชคเชฎ เชตเชพเชฏเชฐเชถเชพเชฐเซเช เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซเช เชเชจเซเชธเซเชฒ เชธเชเชธเซเชเชฐเชฃ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซเชถเซเช - เชคเซเชจเซ TShark เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ. เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฎเซเชจเซเชเชฎเซเชจเซเชเชจเชพ เชตเชฐเซเชฃเชจเชจเซ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ เชฎเซเช เชตเชงเซ เชเชฐเซเชเชพ เชฎเชพเชเซ TShark เชชเชธเชเชฆ เชเชฐเซเชฏเซเช. เชตเชพเชฏเชฐเชถเชพเชฐเซเช เชธเชพเชฅเซ, เชฎเชจเซ เชธเซเชเซเชฐเซเชจเชถเซเชเซเชธเชจเชพ เชธเชฎเซเชฆเซเชฐเชจเซ เชเชฐเซเชฐ เชชเชกเชถเซ, เชเซ เชเซเชฏเชพเชฐเซ เชตเชพเชฏเชฐเชถเชพเชฐเซเชเชจเซเช เชจเชตเซเช เชธเชเชธเซเชเชฐเชฃ เชฌเชนเชพเชฐ เชชเชพเชกเชตเชพเชฎเชพเช เชเชตเซ เชคเซเชฏเชพเชฐเซ เชเชกเชชเชฅเซ เชเซเชจเซเช เชฅเช เชถเชเซ เชเซ.
เชเซ เชคเชฎเซ Wireshark เชจเซ เชเชชเชฏเซเช เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ เชคเซ เชเชพเชฃเซ เชเซ, เชคเซ เชคเชฎเซ เชคเซเชจเซ เชเชชเชฏเซเช เช เชฎเชพเชฐเชพ เชเชฆเชพเชนเชฐเชฃเซเชจเซ เช เชญเซเชฏเชพเชธ เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซ เชถเชเซ เชเซ. เชชเชฐเชเชคเซ เช เชเชฟเชธเซเชธเชพเชฎเชพเช เชชเชฃ, เชนเซเช เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช เชเซ เชคเชฎเซ TShark เชฎเชพเช เชจเชฟเชชเซเชฃเชคเชพ เชฎเซเชณเชตเซ, เชเชพเชฐเชฃ เชเซ เชคเซ เชคเชฎเชจเซ เชคเชฎเชพเชฐเซ VoIP เชเชชเซเชฒเชฟเชเซเชถเชจเซเชธเชจเซเช เชธเซเชตเชเชพเชฒเชฟเชค เชชเชฐเซเชเซเชทเชฃ เชเชฐเชตเชพเชฎเชพเช, เชคเซเชฎเช เชฐเชฟเชฎเซเช เชเซเชชเซเชเชฐ เชเชฐเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชถเซ.
เชเชฆเซเชถ เชธเชพเชฅเซ TShark เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
$ sudo apt-get install tshark
เชชเชฐเชเชชเชฐเชพเชเชค เชฐเซเชคเซ, เช เชฎเซ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชธเชเชธเซเชเชฐเชฃ เชฎเชพเชเซ เชชเซเชเซเชจเซ เชเชจเซเชธเซเชเซเชฒเซเชถเชจ เชชเชฐเชฟเชฃเชพเชฎ เชคเชชเชพเชธเซเช เชเซเช:
$ tshark --version
เชเซ เชชเชฐเซเชฏเชพเชชเซเชค เชเชตเชพเชฌ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ, เชคเซ เช เชฎเซ เชเชเชณ เชเชพเชฒเซ เชฐเชพเชเซเชถเซเช.
เช เชฎเชพเชฐเชพ เชชเซเชเซเชเซ เชนเชฎเชฃเชพเช เชฎเชพเชเซ เชซเชเซเชค เชเชฎเซเชชเซเชฏเซเชเชฐเชจเซ เช เชเชฆเชฐ เช เชเชพเชฏ เชเซ, เชคเซเชฅเซ เช เชฎเซ tshark เชจเซ เชซเชเซเชค เชเชตเชพ เชชเซเชเซเชเซ เชฌเชคเชพเชตเชตเชพเชจเซเช เชเชนเซ เชถเชเซเช เชเซเช. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชคเชฎเชพเชฐเซ เชเชจเซเชเชฐเชซเซเชธเชฎเชพเชเชฅเซ เชชเซเชเซเช เชเซเชชเซเชเชฐ เชชเชธเชเชฆ เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ เชฒเซเชชเชฌเซเช (เชฒเซเชชเชฌเซเช) TShark เชตเชฟเชเชฒเซเชช เชชเชธเชพเชฐ เชเชฐเซเชจเซ -ilo:
$ sudo tshark -i lo
เช เชฎเชพเชฐเชพ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฒเชพ เชชเซเชเซเชเซ เชตเชฟเชถเซเชจเชพ เชธเชเชฆเซเชถเชพเช เชคเชฐเชค เช เชเชจเซเชธเซเชฒเชฎเชพเช เชฐเซเชกเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเชถเซ (เชธเชคเชค, เช เชฎเซ เชฐเชฟเชฎเซเช เชเชเชเซเชฐเซเชฒ เชชเชฐเชจเซเช เชฌเชเชจ เชฆเชฌเชพเชตเซเชฏเซเช เชเซ เชเซ เชจเชนเซเช เชคเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฒเซเชงเชพ เชตเชฟเชจเชพ). เชเชฆเชพเช เชคเชฎเชพเชฐเชพ เชเชฎเซเชชเซเชฏเซเชเชฐ เชชเชฐ เชเชตเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎเซเชธ เชเซ เชเซ เชธเซเชฅเชพเชจเชฟเช เชฒเซเชช เชฆเซเชตเชพเชฐเชพ เชชเซเชเซเชเซ เชชเชฃ เชฎเซเชเชฒเซ เชเซ, เช เชเชฟเชธเซเชธเชพเชฎเชพเช เช เชฎเชจเซ เช เชฎเชพเชฐเชพ เช เชจเซ เช เชจเซเชฏ เชฒเซเชเซเชจเชพ เชชเซเชเซเชเซเชธเชจเซเช เชฎเชฟเชถเซเชฐเชฃ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ. เชธเซเชจเชฟเชถเซเชเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเซ เชธเซเชเชฟเชฎเชพเช เช เชฎเชจเซ เชซเชเซเชค เช เชฎเชพเชฐเชพ เชฐเชฟเชฎเซเช เชเชเชเซเชฐเซเชฒ เชฆเซเชตเชพเชฐเชพ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซเชฒเชพ เชชเซเชเซเชเซ เช เชฆเซเชเชพเชฏ เชเซ, เช เชฎเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชเชฐ เชเชฎเซเชฐเซเชถเซเช. Ctrl-C เชฆเชฌเชพเชตเซเชจเซ เช เชฎเซ เชตเชฟเชถเซเชฒเซเชทเชเชจเซ เชฌเชเชง เชเชฐเซเช เชเซเช เช เชจเซ เชชเซเชฐเซเช เชจเชเชฌเชฐ เชฎเชพเชเซ เชซเชฟเชฒเซเชเชฐ เชฆเชพเชเชฒ เชเชฐเซเช เชเซเช เชเซเชจเซ เชฐเชฟเชฎเซเช เชเชเชเซเชฐเซเชฒ เชคเซเชจเชพ เชเซเชฐเชพเชจเซเชธเชฎเชฟเชถเชจ (8010) เชฎเชพเชเซ เชเชเชคเชตเซเชฏ เชชเซเชฐเซเช เชคเชฐเซเชเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ: -f "เชฏเซเชกเซเชชเซ เชชเซเชฐเซเช 8010". เชนเชตเซ เช เชฎเชพเชฐเซ เชเชฎเชพเชจเซเชก เชฒเชพเชเชจ เชเชจเชพ เชเซเชตเซ เชฆเซเชเชพเชถเซ:
$ sudo tshark -i lo -f "udp port 8010"
เชจเซเชเซเชจเซเช เชเชเชเชชเซเช เชเชจเซเชธเซเชฒเชฎเชพเช เชฆเซเชเชพเชถเซ (เชชเซเชฐเชฅเชฎ 10 เชฒเซเชเซเช):
1 0.000000000 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
2 0.020059705 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
3 0.040044409 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
4 0.060057104 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
5 0.080082311 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
6 0.100597153 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
7 0.120122668 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
8 0.140204789 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
9 0.160719008 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
10 0.180673685 127.0.0.1 โ 127.0.0.1 UDP 214 8010 โ 7010 Len=172
เชนเชฎเชฃเชพเช เชฎเชพเชเซ, เช เชชเซเชเซเชเซ เชจเชฅเซ, เชชเชฐเชเชคเซ เชเชตเซเชจเซเชเซเชธเชจเซ เชเช เชเซเชฐเชฎเชพเชเชเชฟเชค เชธเซเชเชฟ เชเซ, เชเซเชฏเชพเช เชฆเชฐเซเช เชฒเชพเชเชจ เช เชเชเชพเชฎเซ เชชเซเชเซเช เชตเชฟเชถเซเชจเซ เชธเชเชฆเซเชถ เชเซ เชเซ เชเชจเซเชเชฐเชซเซเชธ เชชเชฐ เชจเซเชเชงเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชนเชคเซเช. เช เชฎเซ เชชเชนเซเชฒเชพเชฅเซ เช เชชเซเชเซเช เชซเชฟเชฒเซเชเชฐเชฟเชเชเชจเซ เชเชพเชณเชเซ เชฒเซเชงเซ เชนเซเชตเชพเชฅเซ, เช เชฎเซ เช เชฎเชพเชฐเชพ เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐเชฎเชพเชเชฅเซ เชซเชเซเชค เชชเซเชเซเชเซ เชตเชฟเชถเซเชจเชพ เชธเชเชฆเซเชถเชพเชเชจเซ เชธเซเชเชฟเชฎเชพเช เชเซเชเช เชเซเช. เชเชเชณ, เชเชพเชฒเซ เช เชเซเชทเซเชเชเชจเซ เชเซเชฒเชฎ เชจเชเชฌเชฐเซ เชฆเซเชตเชพเชฐเชพ เชกเชฟเชธเชฟเชซเชฐ เชเชฐเซเช:
เชเชตเซเชจเซเช เชจเชเชฌเชฐ.
เชคเซเชจเซ เชเชเชจเชพเชจเซ เชธเชฎเชฏ.
เชชเซเชเซเชเชจเซเช เชธเซเชคเซเชฐเซเชค IP เชธเชฐเชจเชพเชฎเซเช เช
เชจเซ เชชเซเชเซเชเชจเซเช เชเชเชคเชตเซเชฏ IP เชธเชฐเชจเชพเชฎเซเช.
เชชเซเชเซเชเชจเซ เชชเซเชฐเซเชเซเชเซเชฒ UDP เชคเชฐเซเชเซ เชฌเชคเชพเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ เชเชพเชฐเชฃ เชเซ RTP เชชเซเชเซเชเซ UDP เชชเซเชเซเชเซเชจเซ เช
เชเชฆเชฐ เชชเซเชฒเซเชก เชคเชฐเซเชเซ เชฎเซเชเชฒเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชฌเชพเชเชเชฎเชพเช เชชเซเชเซเชเชจเซเช เชเชฆ.
เชชเซเชเซเชเชจเซ เชธเซเชคเซเชฐเซเชค เชชเซเชฐเซเช เชจเชเชฌเชฐ เช
เชจเซ เชชเซเชเซเชเชจเซ เชเชเชคเชตเซเชฏ เชชเซเชฐเซเช เชจเชเชฌเชฐ.
เชชเซเชเซเช เชชเซเชฒเซเชกเชจเซเช เชเชฆ, เช
เชนเซเชเชฅเซ เชเชชเชฃเซ เชจเชฟเชทเซเชเชฐเซเชท เชชเชฐ เชเชตเซ เชถเชเซเช เชเซเช เชเซ เช
เชฎเชพเชฐเซเช เชเซเชฐเชพเชจเซเชธเชฎเซเชเชฐ 172 เชฌเชพเชเชเชจเชพ เชเชฆเชจเชพ RTP เชชเซเชเซเช เชฌเชจเชพเชตเซ เชเซ, เชเซ เชเชพเชคเซเชฎเชพเช เชฌเชคเชเชจเซ เชเซเชฎ, 214 เชฌเชพเชเชเชจเชพ เชเชฆเชจเชพ UDP เชชเซเชเซเชเชจเซ เช
เชเชฆเชฐ เชธเซเชฅเชฟเชค เชเซ.
เชนเชตเซ UDP เชชเซเชเซเชเซเชจเซ เช
เชเชฆเชฐ เชเซเชตเชพเชจเซ เชธเชฎเชฏ เชเชตเซ เชเชฏเซ เชเซ, เช เชฎเชพเชเซ เชเชชเชฃเซ TShark เชจเซ เชเซเชจเชพ เชตเชฟเชธเซเชคเซเชค เชธเซเช เชธเชพเชฅเซ เชฒเซเชจเซเช เชเชฐเซเชถเซเช:
sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x
เชชเชฐเชฟเชฃเชพเชฎเซ, เชชเซเชฐเซเชเซเชฐเชพเชฎ เชเชเชเชชเซเช เชธเชฎเซเชฆเซเชง เชฅเชถเซ - เชชเซเชเซเชเชจเซ เชเชเชคเชฐเชฟเช เชธเชพเชฎเชเซเชฐเซเชจเซเช เชกเชฟเชเซเชฐเชฟเชชเซเชถเชจ เชเซเชจเชพ เชเชพเชฐเชฃเซ เชคเซ เชฆเชฐเซเช เชเชตเซเชจเซเชเชฎเชพเช เชเชฎเซเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ. เชเชเชเชชเซเชเชจเซ เชตเชงเซ เชธเชพเชฐเซ เชฐเซเชคเซ เชเซเชตเชพ เชฎเชพเชเซ, เชคเชฎเซ เชเชพเช เชคเซ Ctrl-C เชฆเชฌเชพเชตเซเชจเซ TSharkเชจเซ เชฐเซเชเซ เชถเชเซ เชเซ, เช เชฅเชตเชพ เชฐเชจ เชเชฎเชพเชจเซเชกเชฎเชพเช เชเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เชชเชพเชเชชเชฒเชพเชเชจ เชเชฎเซเชฐเซเชจเซ เชซเชพเชเชฒเชฎเชพเช เชคเซเชจเชพ เชเชเชเชชเซเชเชจเซเช เชกเซเชชเซเชฒเชฟเชเซเช เชเชฐเซ เชถเชเซ เชเซ, เชซเชพเชเชฒเชจเซเช เชจเชพเชฎ, tee <filename> เชธเซเชชเชทเซเช เชเชฐเซ เชถเชเซ เชเซ:
$ sudo tshark -i lo -f "udp port 8010" -P -V -O rtp -o rtp.heuristic_rtp:TRUE -x | tee log.txt
เชนเชตเซ เชเชพเชฒเซ เชเซเชเช เชเซ เชเชชเชฃเซ เชซเชพเชเชฒเชฎเชพเช เชถเซเช เชฎเซเชณเชตเซเชฏเซเช, เช เชนเซเช เชคเซเชฎเชพเชเชฅเซ เชชเชนเซเชฒเซเช เชชเซเชเซเช เชเซ:
1 0.000000000 127.0.0.1 โ 127.0.0.1 RTP 214 PT=ITU-T G.711 PCMU, SSRC=0x6B8B4567, Seq=58366, Time=355368720
Frame 1: 214 bytes on wire (1712 bits), 214 bytes captured (1712 bits) on interface 0
Ethernet II, Src: 00:00:00_00:00:00 (00:00:00:00:00:00), Dst: 00:00:00_00:00:00 (00:00:00:00:00:00)
Internet Protocol Version 4, Src: 127.0.0.1, Dst: 127.0.0.1User Datagram Protocol, Src Port: 8010, Dst Port: 7010
Real-Time Transport Protocol [Stream setup by HEUR RT (frame 1)]
[Setup frame: 1]
[Setup Method: HEUR RT]
10.. .... = Version: RFC 1889 Version (2)
..0. .... = Padding: False
...0 .... = Extension: False
.... 0000 = Contributing source identifiers count: 0
0... .... = Marker: False
Payload type: ITU-T G.711 PCMU (0)
Sequence number: 58366 [Extended sequence number: 58366]
Timestamp: 355368720
Synchronization Source identifier: 0x6b8b4567 (1804289383)
Payload: ffffffffffffffffffffffffffffffffffffffffffffffff...
0000 00 00 00 00 00 00 00 00 00 00 00 00 08 00 45 00 ..............E.
0010 00 c8 3c 69 40 00 40 11 ff b9 7f 00 00 01 7f 00 ..<i@.@.........
0020 00 01 1f 4a 1b 62 00 b4 fe c7 80 00 e3 fe 15 2e ...J.b..........
0030 7f 10 6b 8b 45 67 ff ff ff ff ff ff ff ff ff ff ..k.Eg..........
0040 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ................
00d0 ff ff ff ff ff ff ......
เช เชฎเซ เชเชเชณเชจเซ เชฒเซเช เช เชธเซเชเชฟเชฎเชพเช เชธเชฎเชพเชตเชฟเชทเซเช เชฎเชพเชนเชฟเชคเซเชจเซเช เชตเชฟเชถเซเชฒเซเชทเชฃ เชเชฐเชตเชพ เชฎเชพเชเซ เชธเชฎเชฐเซเชชเชฟเชค เชเชฐเซเชถเซเช เช เชจเซ เช เชจเชฟเชตเชพเชฐเซเชฏเชชเชฃเซ RTP เชชเซเชเซเชเชจเซ เชเชเชคเชฐเชฟเช เชฐเชเชจเชพ เชตเชฟเชถเซ เชตเชพเชค เชเชฐเซเชถเซเช.
เชธเซเชฐเซเชธ: www.habr.com