рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ
Shareaza рдХреЗ рд▓рд┐рдП
Lua (
GitHub )
рдкрд░ рдПрдХ рдмрд╛рд╣рд░реА
DHT рдЯреНрд░реИрдХрд░ рд▓рд┐рдЦрд╛ рдерд╛ред Shareaza рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдирд┐рдпрдорд┐рдд рд╕реНрдерд╛рдиреАрдп рдЯреНрд░реИрдХрд░ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ рдПрдХ рдмрд┐рдЯрдЯреЛрд░реЗрдВрдЯ DHT рдХреНрд▓рд╛рдЗрдВрдЯ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЯреНрд░реИрдХрд░ рдХреЗ рдмрд┐рдирд╛ рдЪреБрдВрдмрдХ рд▓рд┐рдВрдХ рдХреЗ рд▓рд┐рдП рдЯреЙрд░реЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЬрдм рдЧреНрд░рд╛рд╣рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдЬреНрдЮрд╛рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЯ рдкрдХрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЖрдЧреЗ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдмрдЪрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рд╡рд┐рдХрд▓реНрдк рд╕рдХреНрд╖рдо рд╣реИ)ред
рддреЛ, рдмрд┐рдЯрдЯреЛрд░реЗрдВрдЯ DHT рдореЗрдВ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИред
(рдорд╛рдирдХ рдлрд╝реАрд▓реНрдб рд╕рд╛рдлрд╝ рд╣реЛ рдЧрдП рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдП рдЧрдП рд╣реИрдВ):
{
v = "UTct",
q = "рд╡реЛрдЯ",
a = {
рд▓рдХреНрд╖реНрдп = "",
рд╡реЛрдЯ = 0,
рдЯреЛрдХрди = "",
рдЖрдИрдбреА = ""
}
y = "q",
t = ""
}
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирдпрд╛ рдХреНрдпрд╛ рд╣реИ:
- v = "UTct" - рдпреЗ рдХреНрд▓рд╛рдЗрдВрдЯ ID рдХреЗ рджреЛ рдЕрдХреНрд╖рд░ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ uTorrent) рдФрд░ рд╕рдВрд╕реНрдХрд░рдг 2 рдмрд╛рдЗрдЯреНрд╕ (63 74) рд╣реИред
- q = "рд╡реЛрдЯ" - рдирд╛рдо рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдпрд╣ "рд╡реЛрдЯ" рд╣реИред
- рд╡реЛрдЯ = 0 - рд╡реИрд╕реЗ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд░реЗрдЯрд┐рдВрдЧ рд╣реИред
рдмрд╛рдХреА рд╕рдм рдХреБрдЫ рдШреЛрд╖рдгрд╛ рдХреЗ рдкреИрдХреЗрдЬ рдореЗрдВ рдЬреИрд╕рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреЛрд░реНрдЯ рдЧрд╛рдпрдм рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рд╡реЛрдЯ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦреАрдВрдЪрдХрд░, рд╣рдо рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдкреИрдХреЗрдЬ рдкрд░ рдареЛрдХрд░ рдЦрд╛рддреЗ рд╣реИрдВ:
{
v = "UTdS",
q = "рдШреЛрд╖рдгрд╛_рдкреЗрдХрд░",
a = {
рдирд╛рдо = "рдлрд╝рд╛рдЗрд▓ Name.avi",
info_hash = "",
рдкреЛрд░реНрдЯ = 1,
рдЖрдИрдбреА = "",
рдЯреЛрдХрди = ""
}
y = "q",
t = ""
}
рдЯреЙрд░реЗрдВрдЯ рдХреЗ рдирд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдШреЛрд╖рдгрд╛_рдкреЗрдХрд░ (рджреЗрдЦреЗрдВ a.name)ред рдЦреЛрдЬ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╣рдо рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рддреЗ рд╣реИрдВ:
{
v = "рдПрдЬрд╝ \ 5 рдПрдЪ",
q = "рдШреЛрд╖рдгрд╛_рдкреЗрдХрд░",
a = {
рдмреАрдЬ = 0,
info_hash = "",
рдкреЛрд░реНрдЯ = 1,
рдЯреЛрдХрди = "",
рдЖрдИрдбреА = ""
}
y = "q",
t = ""
}
рдЧреНрд░рд╛рд╣рдХ рдЖрдИрдбреА рд╕реЗ, рд╣рдо рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдЬрд╝реНрдпреВрд░рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рд╡рд┐рдХреА рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдирд╛, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реБрдЬрд╝ рд╣реИ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдШреЛрд╖рдгрд╛ рдХреА рдЧрдИ рдХрд┐ рдмреАрдЬ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ 0. рдкрд░ рд╕реЗрдЯ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рджрд╛рд╡рдд рдПрдХ рдмреАрдЬ рдирд╣реАрдВ рд╣реИ, рдХреЗрдУ рдХрд╣рддреЗ рд╣реИрдВред
рдФрд░ рдлрд┐рд░, рдПрдЬрд╝реНрдпреЛрд░рд╕:
{
v = "AZ00",
q = "get_peers",
a = {
рдкрд░рд┐рдорд╛рд░реНрдЬрди = 1,
рдЪрд╛рд╣реЛ = {
"N4"
}
info_hash = "",
рдЖрдИрдбреА = ""
}
y = "q",
t = ""
}
рд╣рдо рдкрд░рд┐рдорд╛рд░реНрдЬрди рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдпрд╣ рдЯреНрд░реИрдХрд░ рдХреЛ рд╕реНрдХреНрд░реЗрдк рдЕрдиреБрд░реЛрдз рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рд╣реИред рд╡рд╛рдВрдЯ рдПрдХ рд╕реВрдЪреА рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ "n4" рдорд╛рди рд╣реИред рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдиреЗ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдлрд╝реНрд▓рд┐рдХрд░ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реАрдЦрд╛ред N4 рдХреНрд░рдорд╢рдГ IPv4 рдкрддреЗ рдФрд░ N6 рд╣реИрдВ, IPv6 рдкрддреЗ рдПрдХ рд╕рд╛рде рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдЖрдЬ рд╣рдорд╛рд░реА рдкрдХрдбрд╝ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЯ рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:
{
рдЖрд░ = {
рдЖрдИрдкреА тАЛтАЛ= "\ 0 \ 0 \ 0 \ 0",
рдиреЛрдбреНрд╕ 2 = {}
}
y = "r"
}
рдЙрддреНрддрд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдИрдкреА рдлрд╝реАрд▓реНрдб рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрд╛рдВрдЪ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдпрд╣ рдЖрдкрдХрд╛ рдЦреБрдж рдХрд╛ рдЖрдИрдкреА рд╣реИред
nodes2 - рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдпрд╛рдж рд╣реИ ipv6 рдиреЛрдбреНрд╕ рдХреА рд╕реВрдЪреАред рдЪреВрдБрдХрд┐ рдореЗрд░рд╛ рдкреНрд░рджрд╛рддрд╛ рдЕрднреА рднреА ipv4 рдкрд░ рд╣реИ, рдпрд╣ рдПрдХ рдРрд╕рд╛ рдкреНрд░рд╢реНрди рд╣реИ рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдмрд╣реБрдд рд╕рд╛рд░реА рдирдИ рдЪреАрдЬреЗрдВ рджрд┐рдЦрд╛рдИ рджреАрдВ, рдФрд░ рдЗрд╕рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдореБрдЭреЗ рдЙрд╕ рдЧреНрд░рд╛рд╣рдХ рд╕реЗ рдорджрдж рдорд╛рдВрдЧрдиреЗ рдХрд╛ рдореМрдХрд╛ рдорд┐рд▓рд╛, рдЬрд┐рд╕рдиреЗ рдЕрдЬреНрдЮрд╛рдд рдкреИрдХреЗрдЬ рднреЗрдЬрд╛ рдерд╛ред
рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЬрд╛рдВрдЪ
{
t = "",
y = "q",
q = "рд╕рд╣рд╛рдпрддрд╛",
a = {
рдкрде = {"q", "рд╕рд╣рд╛рдпрддрд╛"} - рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рд▓рд╛рдЗрди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИред рд╡рд╣рд╛рдБ рдПрдХ рдкрдВрдХреНрддрд┐ рд╣реБрдЖ рдХрд░рддреА рдереА рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдбреЙрдЯ рджреНрд╡рд╛рд░рд╛ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
}
}
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ q = рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдпрддрд╛ рдЕрдиреБрд░реЛрдз рд╣реИред
рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрддреНрддрд░ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП:
{
t = "",
y = "r",
рдЖрд░ = {
рдорджрдж =
[= [
q = [рд╕рд╣рд╛рдпрддрд╛, рдкрд┐рдВрдЧ, find_node, get_peers, ann_peer]
рдорджрдж - dht рдкреИрдХреЗрдЯ рдХреЗ рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛ рдорджрджред
a.path (рдХреНрд╡реЗрд░реА рдкреИрдХреЗрдЯ) - рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдкрде
r.help (рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдкреИрдХреЗрдЯ) - рдирдП рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВ
рдФрд░: http://forum.bittorrent.org/viewtopic.php?pid=2134
рдЕрдиреНрдп http://bittorrent.org/beps/bep_0005.html рдкрд░ рджреЗрдЦреЗрдВ
] =]
}
}
рд╢рд╛рдпрдж рдПрдХ рдЕрд▓рдЧ рд╕реВрдЪреА рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд┐рдВрдХ рдмреЗрд╣рддрд░ рд╣реИрдВред
рддреЛ рдареАрдХ рд╣реИред рдЗрд╕ рд╡рд┐рд╖рдп рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ Google рд╡рд┐рд╡рд░рдг, рдЯрд┐рдкреНрдкрдгреА рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рд╡реИрд╕реЗ
forum.bittorrent.org рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдФрд░ рдмрд┐рдЯрдЯреЛрд░реЗрдВрдЯ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рдирд╡рд╛рдЪрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИред
рдкреАрдпрд░ рдЯреВ рдкреАрдпрд░-рдЯреВ-рдкреАрдпрд░ рдХрд░реНрдо рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред
PPS рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред