
рд╣рдорд╛рд░реЗ MKD рдХреЗ рдкреНрд░рдмрдВрдзрдХреАрдп рдШрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ usurpation, рдФрд░ "рдХрдВрдШреА" рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╡рд┐рдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╣рдо рдзреАрд░реЗ-рдзреАрд░реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдирд┐рдЧрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдмреЗрд╢рдХ, рд╡рд┐рддреНрддрдкреЛрд╖рдг рдиреНрдпреВрдирддрдо рд╣реИ, рдпреЛрдЬрдирд╛рдПрдВ рднрд╡реНрдп рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдЪрд╛рд░рд╛рдЧрд╛рд╣ рд╕реЗ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╡рд┐рд╡рд░рдг рдереЛрдбрд╝рд╛ рдмрд╛рдж рдореЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрдЧ рд╣реИ рдЬрд┐рд╕рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛ рд╣реИред
рддреЛ, рдпрд╣ рд╕рдм рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╢реБрд░реВ рд╣реБрдЖ - рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧреБрдВрдмрдж рд╡рд╛рд▓рд╛ рдХреИрдорд░рд╛, рд╕рдмрд╕реЗ рдШрдЯрд┐рдпрд╛ рдПрдХ "
рдХреЗрд╡рд▓ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЧрдП рдЖрдИрдкреА рдФрд░ рдЧреБрдВрдмрдж " рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЦреЛрдЬ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реБрдИ (рдПрдХ рдЕрд▓рдЧ рдкреЛрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╖рдп, рдлрд┐рд░ рд╕реЗ, рдмрд╛рдж рдореЗрдВ рд╣реЛрдЧрд╛) ... рдЕрдВрдд рдореЗрдВ, рдпрд╣ рдПрдХ рдЪреИрдирд▓ рдореЗрдВ рдореИрдХреНрд░реЛрд╕реНрдХреЛрдк рдкрд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдХреБрдЫ рдорд╣реАрдиреЗ рдерд╛, рдореИрдВрдиреЗ рдЦрд╛рдирд╛ рдпрд╛ рдкреАрдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдкреВрдЫрд╛, рдЗрд╕рд╕реЗ рдирд╢реЗрдбрд╝реА рд▓реЛрдЧреЛрдВ рдХреЛ рдЧрд╛рдбрд╝реА рдЪрд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реАред
рдФрд░ рдЕрдм рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рддрд░рд╣ рдпрд╣ рд╕рдордп-рд╕рдордп рдкрд░ рджреБрд░реНрдШрдЯрдирд╛рдЧреНрд░рд╕реНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдкрд╛рдк рдХрд┐рдпрд╛: рдкреНрд░рддрд┐рд╢рдд, рдиреЗрдЯрд╡рд░реНрдХ, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░, рдордВрдЧрд▓ рдкрд░ рдореМрд╕рдо ... рд▓реЙрдЧ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерди рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреИрдорд░рд╛ рд╕рдордп-рд╕рдордп рдкрд░ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
updрд╣рд╛рдВ, рдЕрдзрд┐рдХ рдХреИрдорд░реЗ рдЦрд░реАрджреЗ рдЧрдП, рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЧреБрдгрд╡рддреНрддрд╛ рдФрд░ рдХреАрдорддред рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рдлреНрддреЛрдВ рдореЗрдВ рддреАрди рдЦреВрдмрд╕реВрд░рдд рджрд┐рдиреЛрдВ рдореЗрдВ рдЖрд▓рд╕реНрдп рдкрд░ рдХрд╛рдмреВ рдкрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕рдм 1 рдордВрдЬрд┐рд▓ рдкрд░ рд▓рдЧрд╛рдпрд╛ рдЧрдпрд╛, рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдореЗрдВ рд▓рд╛рдпрд╛ рдЧрдпрд╛, рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рдерд╛ред рдФрд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХрд╛ рджреВрд╕рд░рд╛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЪрд▓рд╛ рдЧрдпрд╛, рддрд╛рдХрд┐ рдХреИрдорд░реЗ рдмрдбрд╝реЗ, рдЕрдзрд┐рдХ рдорд╛рдирд╡реАрдп рд╣реЛрдВ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛ ... рдПрдиреНрдпреВрдорд░реЗрд╢рди рдХреЗ рджреВрд╕рд░реЗ рджреМрд░ рдХреЗ рдмрд╛рдж, рдЬрдмрдХрд┐ AxxonNext рдЦрдбрд╝рд╛ рд╣реИред рд╣рд╛рдВ, рдХреЗрд╡рд▓ рд▓реИрдЧ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВ: рдпрджрд┐ рдЖрдк рдЯреАрд╕реАрдкреА рд╕рдХреНрд╖рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдХреИрдорд░реЗ рд╣рд░ 5-10 рдорд┐рдирдЯ рдореЗрдВ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЧрд┐рд░ рдЬрд╛рддреЗ рд╣реИрдВ; рдФрд░ рдпрджрд┐ рдЖрдк рдпреВрдбреАрдкреА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдкрд░ рдЪрдврд╝ рдЬрд╛рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдмрд╛рд▓реНрдЯреА рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХреА, рдФрд░
рдореИрдХреНрд╕рдкреНрд▓рд╛рд╢рд┐рди рд▓реЗ рдФрд░ рдХрд╣рд╛ рдХрд┐ рдпрд╣ рдЪреАрдиреА рдХреИрдорд░реЛрдВ рдХрд╛ рдПрдХ рд╕реНрдерд┐рд░ рдмрдЧ рд╣реИ, рдЬрд╣рд╛рдВ рдлрд░реНрдорд╡реЗрдпрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛: рдпрджрд┐ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд░реЗрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рддреЛ рдХрдЪрд░рд╛ рдзрд╛рд░рд╛ рдореЗрдВ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдЕрд▓рд╕реА рдкрд░ рдмреЗрдЪрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдХрдИ рдмрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдмрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рдЕрдВрдЧреНрд░реЗрдЬреА рд╣рдо рджреЛрдиреЛрдВ рд╡рд╛рдВрдЫрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдмрд╕ "рд╢реЛ рдХреЛрдб" рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЦреБрджрд╛рдИ рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг: рдХрд╛рд░рдг рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ
рддреЛ, рдкрд╣рд▓реЗ рд╣рдо tcpdump рд▓реЗрддреЗ рд╣реИрдВ, рдФрд░ рдЪрдЯреНрдЯрд╛рди рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдереЛрдбрд╝реЗ рд╕рдордп рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ, 5 рдорд┐рдирдЯ рдореЗрдВ рдореИрдВрдиреЗ 3 рдЯреБрдХрдбрд╝реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдХрдбрд╝рд╛ред рдХреИрд╕реЗ рд╕рдордЭреЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ? рдбреЗрдврд╝ рдорд┐рд▓рд┐рдпрди рдкреИрдХреЗрдЯ рдХреА рдПрдХ рдзрд╛рд░рд╛ ... рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдПрдХ рдХреИрдорд░рд╛ рдЫреЛрдбрд╝рдХрд░ред рдлрд┐рд░ Ctrl + F => tcp.flags.syn == 1 => рд╣рдо рдкреБрди: рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рд╢реБрд░реБрдЖрдд рдкрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╕реЗ рд╣рдо рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реБрдЖ ...

рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдХрдиреЗрдХреНрд╢рди рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдкрд░ рдмрдВрдж рдерд╛ ... рдпрд╣ рдХреЗрд╡рд▓ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, Win = 11460, Win = 10200, Win = 8940 - рдЕрд░реНрдерд╛рдд, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд╕реНрдЯреЙрдк рд╕реНрдЯреЙрдк рд╕реНрдЯреЙрдкред рдпрд╣ рд╕рдордп рдореЗрдВ рдХреИрд╕реЗ рдирд╣реАрдВ рд╣реИ? рдПрдПрдордбреА рдлреЗрдиреЛрдо II X6 1100T? рдирд╣реАрдВ, рдпрд╣ рдЕрдЬреАрдм рд╣реИред рдЖрдИрдУ? рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдбрд┐рд╕реНрдХ рдкрд░ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ, рдФрд░ рд╢реЗрд▓реНрдл рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрд░рд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдФрд░ рдлрд┐рд░ рджреЗрдЦрдиреЗ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рд╣реЛрдЧреА, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП - рд▓реЗрдХрд┐рди рдпрд╣ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ ... рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╕реНрдХреНрд░реЙрд▓ рдХрд░рддреЗ рд╣реИрдВ:

рддреЛ рд╕рдЪрдореБрдЪ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╡реЗ рдЖрдо рддреМрд░ рдкрд░ рдЬрд╝реАрд░реЛрд╡рд┐рдВрдбреЛ рдкрд░ рдЪрд▓реЗ рдЧрдПред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордп рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдЪрдЯреНрдЯрд╛рди рдХреНрдпреЛрдВ! рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ, рдПрдХ рдФрд░ рдЪрдЯреНрдЯрд╛рди рджреЗрдЦреЗрдВ ...

рдЗрд╕рд▓рд┐рдП, рд╣рдо 2.5 рд╕реЗрдХрдВрдб рдХреЗ рд▓рд┐рдП ZeroWindow рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХрд┐рд╕реА рднреА рджреНрд╡рд╛рд░ рдкрд░ рдирд╣реАрдВ рдЪрдврд╝рддрд╛ рд╣реИред рдиреАрдЪреЗ рд╕реНрдХреНрд░реЙрд▓ рдХрд░реЗрдВ рдФрд░ рд╕рдордЭрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ:


рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ - рдЯреАрд╕реАрдкреА рд╕реНрдЯреИрдХ рдиреЗ рдмрд╣реБрдд рдЦрд░рд╛рдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ (рдХреИрдорд░реЗ? рд╢рд╛рдпрдж ...), рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдЖрд░рдЯреАрдкреА рд╕реНрдЯреНрд░реАрдо рднрдЯрдХ рдЧрдИ - рдПрдХ рдмрд┐рдВрджреБ рдкрд░, рдбрд╛рдпрдиреЗрдорд┐рдХрдЖрд░рдЯреАрдкреА-рдЯрд╛рдЗрдк -96 рдХреЗ рдмрдЬрд╛рдп, рдЖрд░рдЯреАрдПрд╕рдкреА рдХрдВрдЯрд┐рдиреНрдпреВрдПрд╢рдиред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ: рд╕рд┐рдореБрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдПрдХ рдЖрд░рдЯреАрдкреА рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реИ, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдмрд╛рд╣рд░ рдЦреАрдВрдЪреЛ, рдФрд░ рдлрд┐рд░ рд╕реЛ рдЬрд╛рдУ (), рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдзрд╛рд░рд╛ рдЯреВрдЯрддреА рд╣реИред
рдлреНрд░реЗрдВрдХрд╕реНрдЯреАрди рдХреЗ рд▓рд┐рдП рдкрд╛рд░реНрдЯреНрд╕ рдвреВрдБрдврдирд╛
рдЬрдм рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рдЯреБрдХрдбрд╝рд╛ рдЬрд▓реНрджреА рд╕реЗ рдлреЗрдВрдХрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ? рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛ рд▓реЗрдВ, рддреИрдпрд╛рд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ, рдЗрд╕реЗ рдПрдХ рд╕рд╛рде рдврд╛рд▓рдирд╛, рдЖрдирдиреНрджрд┐рдд рдХрд░рдирд╛ред рд╣рдо рдЧреВрдЧрд▓ рдореЗрдВ рдЪрдврд╝рддреЗ рд╣реИрдВред рдкрд╛рдпрдерди + ONVIFред рд╕рдбрд╝реЗред рд░реВрдмреА + ONVIFред рдУрд╣,
рдорд╛рдгрд┐рдХ-рдСрдирд╡рд┐рдлрд╝-рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ ред рдареАрдХ рд╣реИ, рд▓реЗ рд▓реЛред рд╕реНрдЯреНрд░реАрдо URL рдкрдХрдбрд╝рд╛ рдЧрдпрд╛ред рдорд╣рд╛рди, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЯреНрд╡рд┐рд╕реНрдЯ рдХрд░рддреЗ рд╣реИрдВ: рдкреНрд░реЛрдЯреЛрдХреЙрд▓? .. рдпреВрдбреАрдкреА, рдПрдЪрдЯреАрдЯреАрдкреА, рдЯреАрд╕реАрдкреА ... рдкрд░рд┐рдгрд╛рдо рдПрдХ рд╣реИ - рдареАрдХ рд╣реИ, рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рдХреИрд╕реЗ рдУрд╡реАрдПрдл рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреВрдЖрд░рдПрд▓ рдХреЛ рдкрдХрдбрд╝рд╛ рдЬрд╛рдП, рдЕрдм рдореИрдВ рдЗрд╕реЗ рд╡рд┐рд▓рдп рдХрд░ рджреВрдВрдЧрд╛ред
рдХрд░реНрд▓? рдЪрдмрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВред рдареАрдХ рд╣реИ, рд░реВрдмреА + рдЖрд░рдЯреАрдПрд╕рдкреА ... рд╣реБрд░реНрд░реЗ,
рдПрдХ рд▓реАрдмреА рд╣реИред рдЙрд╕реЗ url, рдФрд░ bummer рдХрд╛рдЯреЗрдВред рдмреЗрд╕рд┐рдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдереЛрдбрд╝рд╛ рдФрд░ рдЧреВрдЧрд▓ред рдУрд╣ред рдлрд┐рд░ рдПрдХ рд╡рд┐рдзрд┐ рд░рд╣рддреА рд╣реИ - рдПрдХ рдлрд╛рдЗрд▓ред
рд╣рдо рдПрдХ рдЧрд░реНрдо рд▓реЛрд╣реЗ рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдк рдХрд░рддреЗ рд╣реИрдВ , рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ
рдХрдЯреМрддреА рдХреЗ рдЬрд╛рджреВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╕рдо рдЦрд╛рддрд╛ рд╣реИ (рдЬреЛ рдореБрдЭреЗ рдмрддрд╛рдПрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ "рдИрдорд╛рдирджрд╛рд░" рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рддрд╛рдХрд┐ рд╡рд╛рдкрд╕реА рдФрд░ рдЙрдкрдЬ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░реЗ? рдЖрдк рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╡рд┐рд╡рд░рдг рд╕реЗ рдХреИрд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рд╕рд╣реА рдврдВрдЧ рд╕реЗ ... рдпрд╣ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЙрд╕рдХреЗ - рдФрд░ рдПрдХ рдХреНрд▓реАрдирд░ рдХреЛрдб, рдФрд░ рд░реЗрд╢рдореА рдмрд╛рд▓)ред
рдФрд░ рдлрд┐рд░ рд╕реЗ рдЖрдирдиреНрджрд┐рдд, rtsp_client рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реА рдЦрд┐рдбрд╝рдХреА рдореЗрдВ рдЦреБрд▓рд╛ tcpdump ... рдзрд┐рдХреНрдХрд╛рд░ рд╣реИ! рдореИрдВрдиреЗ ONVIF рдореЗрдВ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛: рдкреНрд░реЛрдЯреЛрдХреЙрд▓ => "рдЯреАрд╕реАрдкреА"ред рдХреНрдпрд╛ рдирд░рдХ, рдХреНрдпреЛрдВ рдпреВрдбреАрдкреА?
рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдореЗрдВ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЛрд╣рд╛ ... рд╣рд╛! рдпреВрдбреАрдкреА рдХреЛ lib/rtsp/client.rb@request_transport рдкрд░ nailed рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддреЛ, рдПрдХ рд╣реА рдирд╛рдЦреВрди / рдЯреАрд╕реАрдкреА рдХреЗ рд╕рд╛рде рд╡рд╣рд╛рдВ рдорд┐рд▓рд╛рдк рдХрд░реЗрдВред рд╣рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рдЧрд┐рд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВ? рдХрд╣рд╛рдБ рддрдХ? рд╣рд╛рдБ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ_рдкреЛрд░реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдЯреАрд╕реАрдкреА рд╣реИ рддреЛ рдХреНрдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ_рдкреЛрд░реНрдЯ? рд╣рд╛рд░реНрдбрдХреЛрдб rtp_port рдпрджрд┐ рдпрд╣ 554 рдореЗрдВ рдирд╣реАрдВ рд╣реИред рддреЛ, рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдЖрдИрдкреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рд╣рд╛рд░реНрдбрдХреЛрдбред рдУрдкрд╛, рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, 'рдмрд╛рдЗрдВрдб ()' рдХреЗ рд╕рд╛рде рдпрд╣ 554 рдкреЛрд░реНрдЯ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реВрдЯ рдирд╣реАрдВ рд╣реИред рддрд╛рд░реНрдХрд┐рдХ рд╣реИред рддреЛ, рдХреНрдпреЛрдВ? рдЦреИрд░ ... рдпрд╣
RTP :: рд░рд┐рд╕реАрд╡рд░ рдореЗрдВ рд╣реИ ... рд╣рдо
init_socket рдХреЛ рдореЛрдб рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ: TCP рдФрд░ рдЖрд╢реНрдЪрд░реНрдп - рдЙрд╕реЗ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рд▓рд┐рдП TCPServer рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдХреБрдЫ рдареАрдХ рдирд╣реАрдВ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдХреЛрдИ рднреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЯреАрд╕реАрдкреА рдкрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ред
рддрд░реНрдХ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдХреЗ рдмрд╛рдж, рд╡рд┐рдЬрд┐рд▓реЗрдВрдЯ рдЖрдИ рдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдХреЛрдИ рджреАрд╡рд╛рд░ рдирд╣реАрдВ рдереА:
рдкрд░рд┐рд╡рд╣рди: рдЖрд░рдЯреАрдкреА / рдПрд╡реАрдкреА / рдЯреАрд╕реАрдкреА; рдпреВрдиреАрдХрд╛рд╕реНрдЯ; рдЧрдВрддрд╡реНрдп = 172.28.1.199; рд╕реНрд░реЛрдд = 172.28.1.95; рдЗрдВрдЯрд░рд▓реЗрдпрд░реНрдб = 0-1;
рдЪрд▓реЛ ... рдХреНрдпрд╛ рдЕрдВрддрд░реНрджреНрд╡рдВрджреНрд╡ рд╣реБрдЖ? Google: rtp interleaved =>
рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ => рдкреГрд╖реНрда рдкрд░ рдЦреЛрдЬреЗрдВ "interleaved" => рд╣рд╛рдБ! рддреЛ рдЙрд╕реА рд╕рдВрдмрдВрдз рдореЗрдВ рдЖрд░рдЯреАрдкреА рдФрд░ рдЖрд░рдЯреАрдПрд╕рдкреА рдХреА рджреАрд╡рд╛рд░!
рд╣рдо рдЖрд░рдЯреАрдПрд╕рдкреА рд▓рд┐рдм рдХреЛ рдмрд╛рд╣рд░ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рдпрд╣рд╛рдВ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рд╕реЗ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рд╣рдо рдЕрдореАрдмрд╛ рдЙрдЧрд╛рддреЗ рд╣реИрдВ
рддреЛ, рд╣рдо рдлрд┐рд░ рд╕реЗ рд╢реВрдиреНрдп рдкрд░ рд╣реИрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ rsp рд╣реИ: // рдХреИрдорд░реЗ рдХрд╛ url, рдХрдиреЗрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдирд╛рд▓реА рдХреЗ рджреМрд░рд╛рди рдЗрд╕реЗ рдорд░реНрдЬ рдХрд░рдиреЗ рдФрд░ рдЦреЗрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рдмрдВрдж рдХрд░реЛ! рд╕рдмрд╕реЗ рдкрд╣рд▓реЗред Url рд╣реИред рдПрдХ рдХреИрдорд░рд╛ рд╣реИред рдЙрд╕ рдкрд░ рдПрдХ рдмрдЧ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рд╣реИред рдореБрдЭреЗ ONVIF рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЖрд░рдЯреАрдПрд╕рдкреА рдХреНрдпреЛрдВ? рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдФрд░ рдЙрддреНрддрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЬрд▓реНрджреА рд╕реЗ рдирд╣реАрдВ рдХрд╣рд╛ред рд╡рд░реНрдгрди? рдФрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ ... рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ SETUP рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рддреНрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдлрд┐рд░ рдЙрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓реЗрдВред
рдкрд╣рд▓реЗ рдЕрдиреБрднрд╡ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдпрд╣рд╛рдВ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛! рдкрд╣рд▓реЗ рдкреИрдирдХреЗрдХ рдиреЗ рддреБрд░рдВрдд рдЧреЛрд▓реА рдорд╛рд░ рджреА: рдПрдХ
рд╕рд╛рдзрд╛рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреЗ рдмрдЧ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреБрди: рдкреЗрд╢ рдХрд┐рдпрд╛ - рдиреАрдВрдж рдХреЗ рдмрд╛рдж () рдФрд░ рдПрдХ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдзрд╛рд░рд╛ рдЯреВрдЯ рдЧрдИред
рд▓реЗрдХрд┐рди TCP рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ TCP_WINDOW_CLAMP рд╕реЗрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП setsockopt рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рд▓реЗрдХрд┐рди рд╕реЙрдХреЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рджред
рдФрд░ рдЗрд╕реЗ рд░реВрдмрд▓ рдореЗрдВ рдХреИрд╕реЗ рдХрд░реЗрдВ? рдЙрдо ... рд╣рдо Google рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ ... рдпрд╣ рдЦрд╛рд▓реА рд╣реИред рд╣рдо
рд╕реНрд░реЛрдд рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ - init_inetsock_internal ... рдЕрдВрдЬреАрд░! рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, rsock_socket () рдмрдирд╛рдПрдБ, рдФрд░ рдлрд┐рд░ рддреБрд░рдВрдд rsock_connect ()ред рдЕрд░реЗред
рдареАрдХ рд╣реИ, рдореИрдВ рдЕрднреА рднреА рдХрдЯрд┐рдВрдЧ рдХреА рддрд░рд╣ рдирд╣реАрдВ рд╣реВрдВред 2 рдорд┐рдирдЯ рдореЗрдВ рд╣рдо
рдЕрдЬрдЧрд░ рдХреЛ рдлрд┐рд░
рд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╕реЗрдЯрд╕реНрдХреЙрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред RTP рдкреИрдХреЗрдЯ рдирдВрдмрд░ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЬреЛрдбрд╝реЗрдВред
рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд╛ рдкрд░рд┐рдгрд╛рдо: рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ, рдХреИрдорд░рд╛ рдЯреВрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЪрд╛рд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджрд┐рдпрд╛, рдФрд░ рд╡рд┐рдХреНрд░реЗрддрд╛ рдХреЛ рдПрдХ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рд▓рд┐рдЦреА, рддрд╛рдХрд┐ рд╡реЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдкрд╛рд╕ рднреЗрдЬ рджреЗрдВред
рдореИрдВ рд╢рд╛рдВрдд рд╣реЛ рдЧрдпрд╛ рд╣реЛрддрд╛, рд▓реЗрдХрд┐рди
рдореИрдХреНрд╕рд▓рд╛рдкреНрд╢рд┐рди рдиреЗ рдкреВрдЫрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдмрдЧ рдХреЗ рд╕рд╛рде рд░рд╣ рд╕рдХрддрд╛ рд╣реВрдВред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЦреБрджрд╛рдИ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд░рд╣рдирд╛ рд╣реИ?
1) рдЖрдк рд╡рд┐рдлрд▓рддрд╛ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
2) рдЖрдк рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреИрд╕реЗ, рд▓реЗрдХрд┐рди рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рддреБрд░рдВрдд рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЬрд╛рдПрдВ, рдкреНрд░рд╡рд╛рд╣ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд┐рдП рдмрд┐рдирд╛ред
3) рдЖрдк рд╕реНрдЯреНрд░реАрдо рдХреЗ рд╕рд╛рде рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рддреЛ, рд╣рдо рдХреЙрд▓ рдЙрдард╛рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЪрд┐рдкрдХ рдЬрд╛рддреЗ рд╣реИрдВ - рдХреЙрд▓ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдФрд░ рдЖрд░рдЯреАрдкреА рдкреИрдХреЗрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЕрдВрддрд░ рд╕реЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред рдпрджрд┐ рд╣рдо рдмрд┐рдВрджреБ 1 рдкрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдиреБрдХрд╕рд╛рди рд▓рдЧрднрдЧ 1500-1800 рдЖрд░рдЯреАрдкреА рдкреИрдХреЗрдЯ (рд▓рдЧрднрдЧ 600 рдкреИрдХреЗрдЯ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдиреАрдВрдж) () рд╣реИред
рд╣рдо рд╕реЛрдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рдЬреБрдбрд╝ рдЬрд╛рддреЗ рд╣реИрдВ ()ред рдкрд░рд┐рдгрд╛рдо рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рд╣реИред
рд╣рдо рдЦреЛрдЬ рд╡рд┐рдзрд┐ "$ \ x00" рджреНрд╡рд╛рд░рд╛ рдкреБрди: рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рддреЗ рд╣реИрдВ - рдпрд╣ рдШреГрдгрд┐рдд рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЦреЛрдЬ рд╡рд┐рдзрд┐ "$ \ x00 [LEN] {рд▓реЗрди рдмрд╛рдЗрдЯреНрд╕} $ \ x00" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреБрдирд░реБрддреНрдерд╛рди рдХреЛ рдЫрдбрд╝реА рдХрд░рддреЗ рд╣реИрдВ - рдпрд╣ рджреГрдврд╝рддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдиреБрдХрд╕рд╛рди рдлрд┐рд░ рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдореБрдХрд╛рдмрд▓реЗ рдбреЗрдврд╝ рдЧреБрдирд╛ рдХрдо рд╣реИред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЯреАрд╕реАрдкреА рдХрдиреЗрдХреНрд╢рди рдЧрд┐рд░рддрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЯреАрд╕реАрдкреА рд╡рд┐рдВрдбреЛ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдФрд░ рдкреНрд░рд╛рдкреНрдд рдмрдлрд╝рд░реНрд╕ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдХрдиреЗрдХреНрд╢рди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ 1-2 рд╡рд┐рдлрд▓рддрд╛рдУрдВ рдХреЗ рдмрд╛рдж, рдзрд╛рд░рд╛ рдмрд╕ рдЯреВрдЯрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддреА рд╣реИ - рдиреАрдВрдж () рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдХреЛ рд╕реБрд╕реНрдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИ, рдФрд░ рдзрд╛рд░рд╛ рдирд╣реАрдВ рдЧрд┐рд░рддреА рд╣реИред
рдкрд░рд┐рдгрд╛рдореА рдкрд░реАрдХреНрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ
рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдЪрдордХрддреА рдирд╣реАрдВ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред
рдФрд░ рдЕрдм, рдЕрдВрдд рдореЗрдВ, рд╣рдо рд╢реАрд░реНрд╖рдХ рдореЗрдВ рдкреВрдЫреЗ рдЧрдП рд╕рд╡рд╛рд▓ рдкрд░ рдЖрдП рд╣реИрдВред
рдпрд╣ рдПрдХ рдмрдЧ, рдпрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ?
рдХрдиреЗрдХреНрд╢рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рддреЛрдбрд╝рдиреЗ рд╕реЗ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрд╣рддрд░ рд╣реИ: рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рдЖрд░рдЯреАрдкреА рдкреИрдХреЗрдЯ рдХреЗ рдирдВрдмрд░ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЦреЛрдП рд╣реБрдП рд╡реЙрд▓реНрдпреВрдо рдХреЛ рдорд╛рдк рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рдЪреИрдирд▓ рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдВрдбрд╡рд┐рдбреНрде рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрддрд▓рд╛ рд╣реИ - рддреЛ рдШрд╛рдЯреЗ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╣реЛрдЧреА, рдЗрд╕ рдкреНрд░рдХрд╛рд░, 5 рд╕реЗрдХрдВрдб рд╕реЗ рдЕрдзрд┐рдХ рдХреЗ рдиреБрдХрд╕рд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реБрдП - рдЖрдк рд╢рд╛рдВрддрд┐ рд╕реЗ рдЪреИрдирд▓ рдХреА рдореЛрдЯрд╛рдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХрдо рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ, рдХреЗрдмрд▓ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ, рдкрд░рдорд╛рдгреБ рдКрд░реНрдЬрд╛ рд╕рдВрдпрдВрддреНрд░ рдХреЛ рдЙрдбрд╝рд╛ рджреЗрдВ, рдпрд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗрдиреЗ рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рддрд░реАрдХрд╛) рдпрд╣ рд╕рдорд╕реНрдпрд╛); рдЕрдЧрд░ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд░рд┐рд╕реАрд╡рд░ рдХреЗ рдкрд╛рд╕ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд░реЗрдХ-рдЕрдк рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ - рд░реЗрд╕рд┐рдВрдХ рд╡реНрдпрд╡рд╣рд╛рд░ = рд╣рдорд╛рд░реА рдЦреБрд╢реАред рд╣рдореЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдпреВрдбреАрдкреА рдФрд░ рдЯреАрд╕реАрдкреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд╛рднреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рдорд┐рд▓рддрд╛ рд╣реИ: рдЕрдЧрд░ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд░рд╛рдм рд╣реИ, рддреЛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ; рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд░рд┐рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИрдВ рдФрд░ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
рдЦреИрд░, рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЪрд▓реЛ рдлрд╝рд░реНрдорд╡реЗрдпрд░ рдореЗрдВ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ ... рд▓реЗрдХрд┐рди рдмрдЧ рд╕рд░рд▓ рд╣реИ: (somedata, somelen) рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ <0, рд░рд┐рдЯрд░реНрди, рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛, рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕рднреА рд╢реБрд░реБрдЖрддреА рдиреЗрдЯрд╡рд░реНрдХ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдкрд╕рдВрджреАрджрд╛ рдЧрд▓рддреА: рднреЗрдЬрдирд╛ (somedata, somelen) somelen рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдХрдо рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ - рдпрд╣ рдмрдлрд░ рдореЗрдВ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реБрдЖред
рдпрджрд┐ рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдХрд┐рд╕реА рджрд┐рди рд╕реЛрдорд╛рдЯрд╛ рд╕реЗ рдкреВрдВрдЫ рдЦреЛ рдЬрд╛рддреА рд╣реИ - рдЗрд╕реЗ рднреЗрдЬрд╛ рдирд╣реАрдВ рдЧрдпрд╛ рдФрд░ рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ред
рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?
рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП: рдЖрдкрдХреЛ рдкреВрд░реНрд╡рд╡рддреН рдЯреБрдХрдбрд╝реЗ рдХреЛ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдФрд░ рдХреБрдЫ рднреА рднреЗрдЬрдиреЗ рд╕реЗ рд░реЛрдХрдирд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЗрд╕ рд╢реЗрд╖ рдХрд╛ () рдЕрдкрдиреЗ рд╕рдВрдкреВрд░реНрдгрддрд╛ рдореЗрдВ рд╕рдм рдХреБрдЫ рдирд╣реАрдВ рднреЗрдЬрддрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ _next_ рдкреИрдХреЗрдЯ рднреЗрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (рдЙрди рд╕рднреА рдХреЛ рдлреЗрдВрдХрдирд╛ рдЬреЛ рд╣рд░ рд╕рдордп рдмрдлрд░ рд╡реНрдпрд╕реНрдд рдереЗ)ред рддрдм рд╣рдореЗрдВ рдЯреАрд╕реАрдкреА рдФрд░ рдпреВрдбреАрдкреА рдХреЗ рдорд┐рд╢реНрд░рдг рдХрд╛ рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреИрдХреЗрдЯ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдореИрдЬрд┐рдХ рд░реАрдХрдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрдорд╛рддрд╛рдУрдВ рдиреЗ рдЗрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рдмрд╛рдж, рдЪреАрдиреА рдХреИрдорд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЪреАрдиреА рдлрд░реНрдорд╡реЗрдпрд░ рдПрдХрд▓ рдмреНрд░реЗрдХ рдФрд░ рдЯреАрдПрдо рдХреЗ рдмрд┐рдирд╛ рд╕рд╣реА рдХрд╛рдо рдХреЗ рд╕рд╛рде рдХреГрдкрдпрд╛ рдХрд░реЗрдВрдЧреЗ;
рдЦреБрд╢реА рдХрд╛ рд╕реНрд░реЛрдд: LIVE555 рдЬреБрд░рд╛рд╕рд┐рдХ
рд╕рдорд░реНрдерди рдореИрдХреНрд░реЛрд╕реНрдХреЛрдк рдиреЗ рдЗрд╕ рддрдереНрдп рдкрд░ рдореЗрд░реА рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдЕрд╕рд╛рд╡рдзрд╛рдиреА рдХреЛ рдЖрдХрд░реНрд╖рд┐рдд рдХрд┐рдпрд╛ рдХрд┐ 2011 рдореЗрдВ LIVE555 рдХреА рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдереА ... рдЗрд╕рд▓рд┐рдП, рдмрд┐рдирд╡реЙрдХ + рдбреАрдбреА + рдорд╛рдЙрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдореИрдВрдиреЗ рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╣рд┐рдореНрдордд рдореЗрдВ рджреЗрдЦрд╛ред rtsp_streamer рдФрд░ рд╕рдЪреНрдЪрд╛рдИ, 2011 рд╕реЗред
рдореИрдВрдиреЗ live.2013.10.09.tar.gz рдФрд░ live.2014.02.19.19.tar_g2 рдХреЗ рджреЛ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЛ рджреЗрдЦрд╛:
diff --git a/liveMedia/RTPInterface.cpp b/liveMedia/RTPInterface.cpp index d45e5a8..3d88d55 100644 --- a/liveMedia/RTPInterface.cpp +++ b/liveMedia/RTPInterface.cpp @@ -324,19 +325,23 @@ Boolean RTPInterface::sendRTPorRTCPPacketOverTCP(u_int8_t* packet, unsigned p } Boolean RTPInterface::sendDataOverTCP(int socketNum, u_int8_t const* data, unsigned dataSize, Bool - if (send(socketNum, (char const*)data, dataSize, 0/*flags*/) != (int)dataSize) { - // The TCP send() failed. - - if (forceSendToSucceed && envir().getErrno() == EAGAIN) { - // The OS's TCP send buffer has filled up (because the stream's bitrate has exceeded the cap + int sendResult = send(socketNum, (char const*)data, dataSize, 0/*flags*/); + if (sendResult < (int)dataSize) { + // The TCP send() failed - at least partially. + + unsigned numBytesSentSoFar = sendResult < 0 ? 0 : (unsigned)sendResult; + if (numBytesSentSoFar > 0 || (forceSendToSucceed && envir().getErrno() == EAGAIN)) { + // The OS's TCP send buffer has filled up (because the stream's bitrate has exceeded + // the capacity of the TCP connection!). // Force this data write to succeed, by blocking if necessary until it does: + unsigned numBytesRemainingToSend = dataSize - numBytesSentSoFar; #ifdef DEBUG_SEND - fprintf(stderr, "sendDataOverTCP: resending %d-byte send (blocking)\n", dataSize); fflush(st + fprintf(stderr, "sendDataOverTCP: resending %d-byte send (blocking)\n", numBytesRemainingToS #endif makeSocketBlocking(socketNum); - Boolean sendSuccess = send(socketNum, (char const*)data, dataSize, 0/*flags*/) == (int)dataS + sendResult = send(socketNum, (char const*)(&data[numBytesSentSoFar]), numBytesRemainingToSen makeSocketNonBlocking(socketNum); - return sendSuccess; + return sendResult == (int)numBytesRemainingToSend; } return False; }
рдФрд░ рдпрд╣рд╛рдБ changelog.txt рд╕реЗ рдПрдХ рдХреНрд▓рд┐рдкрд┐рдВрдЧ рд╣реИ:
2013.12.04:
- Updated the "sendDataOverTCP()" function (in "RTPInterface.cpp") to allow for the possibility of
one of the "send()" calls partially succeeding - ie, writing some, but not all, of its data.
- Fixed a couple of minor bugs. (Thanks to "maksqwe1ukr.net".)
? . , LIVE555 .
, -- topsee; MontaVista. , .