рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдПрдХ рддрд░реАрдХрд╛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдПрдХ рд╕рд┐рдк рдкреНрд░рджрд╛рддрд╛, рдпрд╛ рдЕрдиреНрдп рдбрд┐рд╡рд╛рдЗрд╕ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ, рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИ рдЬрдм рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдИрд╕реАрдПрдл рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ, рдФрд░ рдпрд╣ рдПрд╕рдЖрдИрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдореБрдЭреЗ рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рдореИрдВ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдкреВрдЫрддрд╛ рд╣реВрдВред
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрд╕рдЖрдИрдкреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдЬрд┐рд╕реЗ рдЖрд░рдПрдлрд╕реА 3261 рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореЗрдВ рдПрдХ рдЕрджреНрднреБрдд рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд╛рд░реНрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЙрди рддрд░реАрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рджреВрд░рд╕реНрде рдкрдХреНрд╖ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рджреВрд░рд╕реНрде рдкрдХреНрд╖ (рдХреЛрдИ рдирд┐рд╡реЗрд╢ рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред RFC рд╕реЗ рд╡рд┐рдХрд▓реНрдк рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрджрд╛рд╣рд░рдг:
рд╡рд┐рдХрд▓реНрдк sip: carol@chicago.com SIP / 2.0
Via: SIP / 2.0 / UDP pc33.atlanta.com; рд╢рд╛рдЦрд╛ = z9hG4bKhjhs8ass877
рдореИрдХреНрд╕-рдлрд╝реЙрд░реНрд╡рд░реНрдб: 70
рдХреЛ: <sip: carol@chicago.com>
рдкреНрд░реЗрд╖рдХ: рдРрд▓рд┐рд╕ <sip: alice@atlanta.com>; рдЯреИрдЧ = 1928301774
рдХреЙрд▓-рдЖрдИрдбреА: a84b4c76e66710
CSeq: 63104 рд╡рд┐рдХрд▓реНрдк
рд╕рдВрдкрд░реНрдХ: <sip: alice@pc33.atlanta.com>
рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ: рдЖрд╡реЗрджрди / рдПрд╕рдбреАрдкреА
рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ: 0
рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЙрддреНрддрд░ рд╡реИрд╕рд╛ рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕реЗ рдХрд┐ рд╣рдордиреЗ рдПрдХ INVITE рдЕрдиреБрд░реЛрдз рднреЗрдЬрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ 200 (OK) рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рджреВрд░рд╕реНрде рдкрдХреНрд╖ рдХреЙрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИред рдЖрдЗрдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рднрд╛рдЧ рдкрд░ рдЬрд╛рдПрдВ, рдпрд╣ рдЗрд╕ рддрдереНрдп рд╕реЗ рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдПрдХ рдЖрдИрдкреА рдкреИрдХреЗрдЯ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╕рдВрдмрдВрдзрд┐рдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдФрд░ рдЗрд╕реЗ рджреВрд░рд╕реНрде рдкрдХреНрд╖ рдХреЛ рднреЗрдЬреЗрдВ рдФрд░ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд░реНрд▓ рдореЗрдВ:
#! / usr / рдмрд┐рди / рдкрд░реНрд▓
рдЙрдкрдпреЛрдЧ IO :: рд╕реЙрдХреЗрдЯ;
POSIX 'strftime' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
рдЙрдк SipPing {
my ($ msg, $ рд░рд┐рдореЛрдЯрд╣реЙрд╕реНрдЯ, $ рдХреИрд▓рд┐рдб, $ рд╕реЙрдХреЗрдЯ, $ рджрд┐рдирд╛рдВрдХ, $ рд╢рд╛рдЦрд╛, $ рд▓реЛрдХрд▓рд┐рдк, $ рдбреЗрд╕реНрдЯ);
$ рд░рд┐рдореЛрдЯрд╣реЛрд╕реНрдЯ = рд╢рд┐рдлреНрдЯ;
$ рд▓реЛрдХрд┐рдк = рд╢рд┐рдлреНрдЯ;
$ рд╕реЙрдХреЗрдЯ = IO :: рд╕реЙрдХреЗрдЯ :: INET-> рдирдпрд╛ (
PeerAddr => $ рд░рд┐рдореЛрдЯрд╣реЛрд╕реНрдЯ,
рдкреАрд░рдкреЛрд░реНрдЯ => 5060,
рд▓реЛрдХрд▓рдкреЛрд░реНрдЯ => 5060,
рд▓реЛрдХрд▓рдЕрдбреНрдбрд░ => $ рд╕реНрдерд╛рдиреАрдп
рдкреБрди: рдЙрдкрдпреЛрдЧ => 1,
рдкреНрд░реЛрдЯреЛ => 'udp',
);
$ рдХреИрд▓рд┐рдбред = ('0' .. '9', "рдП .." рдПрдл ") [рдЗрдВрдЯ (рд░реИрдВрдб (16))] рдХреЗ рд▓рд┐рдП 1 .. 32;
$ рддрд╛рд░реАрдЦ = рд╕реНрдЯреНрд░реИрдлрд╝рдЯрд╛рдЗрдо ('% a,% e% B% Y% I:% M:% S% Z', рд╕реНрдерд╛рдиреАрдп рд╕рдордп ());
$ рд╢рд╛рдЦрд╛ = "z9hG4bk"ред рд╕рдордп ();
рдореЗрд░рд╛ $ рдкреИрдХреЗрдЯ = qq (
рд╡рд┐рдХрд▓реНрдк рдПрд╕рдЖрдИрдкреА: $ рд░рд┐рдореЛрдЯрд╣реЛрд╕реНрдЯ рдПрд╕рдЖрдИрдкреА / 2.0
Via: SIP / 2.0 / UDP $ localip: 5060; рд╢рд╛рдЦрд╛ = z9hG4bK39aaa111; рдкрд╛рд╕рдкреЛрд░реНрдЯ
рдореИрдХреНрд╕-рдлрд╝реЙрд░реНрд╡рд░реНрдб: 70
рдкреНрд░реЗрд╖рдХ: "UA" <sip: ua \ @ $ localip>; tag = as54192a85
To: <sip: $ рд░рд┐рдореЛрдЯрд╣реЛрд╕реНрдЯ>
рд╕рдВрдкрд░реНрдХ: <sip: asterisk \ @ $ localip: 5060>
рдХреЙрд▓-рдЖрдИрдбреА: 7706430b46622c057aeaa5ec057a0b59 \ @ $ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг: 6060
CSeq: 102 рд╡рд┐рдХрд▓реНрдк
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдПрдЬреЗрдВрдЯ: UA
рджрд┐рдирд╛рдВрдХ: рдмреБрдз, реирез рджрд┐рд╕рдВрдмрд░ реирежрезрей режреж:режрез рдЬреАрдПрдордЯреА
рдЕрдиреБрдорддрд┐ рджреЗрдВ: INVITE, ACK, CANCEL, рдСрдкреНрд╢рдиреНрд╕, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, рдкрдмреНрд▓рд┐рдХ
рд╕рдорд░реНрдерд┐рдд: рдЬрдЧрд╣, рдЯрд╛рдЗрдорд░
рд╕рд╛рдордЧреНрд░реА-рд▓рдВрдмрд╛рдИ: 0
);
$ рд╕реЙрдХреЗрдЯ $ рдкреИрдХреЗрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ;
eval {
рд╕реНрдерд╛рдиреАрдп $ SIG {ALRM} = рдЙрдк {die};
рдЕрд▓рд╛рд░реНрдо 1;
рдореЗрд░реЗ $ sock_addr = recv ($ рд╕реЙрдХреЗрдЯ, $ рд╕рдВрджреЗрд╢, 190.0);
рдЕрд▓рд╛рд░реНрдо 0;
1;
} рдпрд╛ "рдЕрд╕рдлрд▓" рдорд░ рдЧрдпрд╛;
рдЕрдЧрд░ ($ рд╕рдВрджреЗрд╢) {
рдкреНрд░рд┐рдВрдЯ "рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛: $ msg \ n";
} {
рдкреНрд░рд┐рдВрдЯ "рд╡рд┐рдлрд▓";
}
рдХрд░реАрдм ($ рд╕реЙрдХреЗрдЯ);
}
$ рд░рд┐рдореЛрдЯрд╣реЙрд╕реНрдЯ = '192.168.0.3';
$ localIp = '192.168.0.2';
& SipPing ($ RemoteHost, $ localIp);
рдЗрд╕ рд╕рд░рд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдкрдВрдЬреАрдХрд░рдг рдпрд╛ рдХреЙрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛, рдПрд╕рдЖрдИрдкреА рдПрдЬреЗрдВрдЯ рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреБрдЫ рдкреНрд░рджрд╛рддрд╛ рдХреЗрд╡рд▓ рдкреЛрд░реНрдЯ релрежремреж рд╕реЗ рдкреЛрд░реНрдЯ релрежремреж рдХреЗ рд▓рд┐рдП рд╡реИрдХрд▓реНрдкрд┐рдХ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдерд╛рдиреАрдп рдкреЛрд░реНрдЯ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдкреЛрд░реНрдЯ рд╡реНрдпрд╕реНрдд рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рддрд╛рд░рд╛рдВрдХрди рдЪрд┐рд╣реНрди рдХреЗ рд╕рд╛рде, рдкреБрди: рдЙрдкрдпреЛрдЧ => рез рдкреИрд░рд╛рдореАрдЯрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред