FORTH: рдиреИрдиреЛрд╕рд░реНрд╡рд░реНрд╕ рдФрд░ рдиреИрдиреЛ рдЧреНрд░рд╛рд╣рдХред рднрд╛рдЧ 1

рдпрд╣ рдЕрджреНрднреБрдд рдХрд┐рд▓реЗ рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдФрд░ рдкрд╣рд▓реВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред
рд▓реЗрдЦреЛрдВ рдХреА рдЗрд╕ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ, рдореИрдВ рджрд┐рдЦрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреЛрдЯреЗ рдЧреНрд░рд╛рд╣рдХ-рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрдиреБрд╕рдВрдзрд╛рди рдФрд░ рд╢реИрдХреНрд╖рд┐рдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдордиреЛрд░рдВрдЬрди рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдХреЛ рд╕рд╛рдд рдФрд░ рдПрд╕рдкреА-рдлреЛрд░реНрде рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдВрджреНрд░реЗрдИ рдЪреЗрд░реЗрдЬрд╝реЛрд╡ рдиреЗ рд▓рд┐рдирдХреНрд╕ рдХреЗ рддрд╣рдд рдЕрдкрдиреЗ рдХрд┐рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреА рдШреЛрд╖рдгрд╛ рдХреА, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХреАред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рд╕рд░реНрд╡рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдЬреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рджреЗрдЧрд╛ ... рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╕рд░реНрд╡рд░ рдкрд░ рд╡рд░реНрддрдорд╛рди рджрд┐рдирд╛рдВрдХ рдФрд░ рд╕рдордп рд╣реИред


рдиреЛрдЯрдкреИрдб рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ (рдПрдХреЗрд▓рдкреИрдб) рдореЗрдВ рдПрдХ datetimes.f рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬреЛ spfx.exe рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рдорд╛рди рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣реЛред

рд╣рдореЗрдВ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП? рд╕реЙрдХреЗрдЯ!
рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЙрдЪрд┐рдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
~ nn \ lib \ sock2.f

рдЖрд╕рд╛рдиреА рд╕реЗ, рд╕рднреА рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рд╣рдореЗрд╢рд╛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

 0 VALUE рд╕реЙрдХрдЯ
 0 VALUE sockt_a
 рд╕реЙрд░реНрд╕рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдереНрд░реЙред (рд╕реЙрдХреЗрдЯреНрд╕ рд╢реБрд░реВ) рд╕реА.рдЖрд░. 
 CreateSocket THROW TO socktред (рд╕реЙрдХреЗрдЯ рдмрдирд╛рдпрд╛ рдЧрдпрд╛) рд╕реА.рдЖрд░.

рдкрд╣рд▓реА рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЪрд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рд╣реИрдВред VALUE рдЪрд░ рдХреНрд▓рд╛рд╕рд┐рдХ рдХрд┐рд▓реЗ рдХрд╛ рд╕реБрдзрд╛рд░ рд╣реИрдВред рд╡реЗ рдЖрдкрдХреЛ рдЕрдВрддрд╣реАрди рд╕рдВрджрд░реНрднреЛрдВ (рдкрддреЗ рдкрд░ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд) рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдкрд╛рда рдХреЛ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
рддреАрд╕рд░реА рдкрдВрдХреНрддрд┐ рдЦреБрдж рдХреЗ рд▓рд┐рдП рдмреЛрд▓рддреА рд╣реИ, рдЕрдВрддрд┐рдо рдПрдХ рдХреЛ рдХреБрдЫ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
CreateSoket рд╢рдмреНрдж рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕рддреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рд╣реИрдВред рдХреБрд░реНрд╕рд┐рдпрд╛рдВ тАЛтАЛрдЕрд▓рдЧ рд╣реИрдВ! рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рд╕реЙрдХреЗрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдЕрд╡рд░реБрджреНрдз рджреНрд╡рд┐рджрд┐рд╢ рдЯреАрд╕реАрдкреА / рдЖрдИрдкреА рд╕реНрдЯреНрд░реАрдо рд╕реЙрдХреЗрдЯ рд╣реИ рдЬреЛ рдЗрд╕ рд╢рдмреНрдж рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реЙрдХреЗрдЯ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЖрдк рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЬрд╛рджреВ рд╢рдмреНрдж THROW рдХреЗрд╡рд▓ рддреНрд░реБрдЯрд┐ рдХреЛрдб рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рддреНрд░реБрдЯрд┐ рдХреЛрдб nonzero рд╣реИ рддреЛ рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИред рдмреНрд░реИрдХреЗрдЯ рдЙрдирдХреЗ рдмреАрдЪ рдЯрд░реНрдорд┐рдирд▓, рд╕реАрдЖрд░ - рд▓рд╛рдЗрди рдлреАрдб рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рд┐рдВрдЯ рдХрд░рддреЗ рд╣реИрдВред
 
 80 рд╕реЙрдХрдЯ рдмрд┐рдВрджреНрд╕реНрдХреЗрдЯ рдереНрд░реЙред (рд╕реЙрдХреЗрдЯ рдмрдВрдзреЗ) рд╕реА.рдЖрд░.
 sockt ListenSocket THROWред (рд╕реБрдиреЛ) рд╕реАрдЖрд░
 sockt AcceptSocket THROW TO sockt_aред (рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ :) 

рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рд╣реИред рдЕрдм рд╣рдо рдкреЛрд░реНрдЯ 80 рдкрд░ рдмреИрдарддреЗ рд╣реИрдВ рдФрд░ рддрдм рддрдХ рд╕реБрдирддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рджрд╕реНрддрдХ рди рджреЗред
рдмреЗрд╢рдХ, рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдордирдорд╛рдирд╛ рдореБрдХреНрдд рдмрдВрджрд░рдЧрд╛рд╣ рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВред
рдЬрдм рддрдХ рдпрд╣ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рддрдм рддрдХ AcceptSoket рд╢рдмреНрдж рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд░реЛрдХ рджреЗрдЧрд╛ред
рд╣рдорд╕реЗ рдХреМрди рдЬреБрдбрд╝рд╛ рд╣реИ?

 sockt_a GetPeerIP & Port THROW SWAP OcA TYPEред "port:"ред 

IP рдкрддрд╛ рдФрд░ рдкреЛрд░реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрдВрд╕реЛрд▓ рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдкреВрд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдХреЗрд╡рд▓ SWAP рдХреЗрд╡рд▓ GetPeerIP рдФрд░ рдкреЛрд░реНрдЯ рд╢рдмреНрдж рдХреЗ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдЪрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реБрдИ ред

рд╣рдо рдкреНрд░реЗрд╖рдг рдХреЗ рд▓рд┐рдП рддрд╛рд░реАрдЦ рдФрд░ рд╕рдордп рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред
рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА

рд▓рд┐рдм \ _ рд╕реБрд╡рд┐рдзрд╛ \ _ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

рдЬрд┐рд╕рд╕реЗ TIME & DATE рд╢рдмреНрдж рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред (рдореБрдЭреЗ рдЗрд╕реЗ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдареАрдХ рдХрд░рдирд╛ рдерд╛, рдЕрдм рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рдорд┐рд▓реАрд╕реЗрдХрдВрдб рджреЗрдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛, рдФрд░ рддрд╛рд░реАрдЦ рдХреНрд░рдо рднреА рдмрджрд▓ рдЧрдпрд╛ред) рдпрд╣ рд╢рдмреНрдж рд╕реНрдЯреИрдХ рдкрд░ 7 рдорд╛рди рдбрд╛рд▓рддрд╛ рд╣реИред рдорд┐рд▓реАрд╕реЗрдХрдВрдб, рд╕реЗрдХрдВрдб, рдШрдВрдЯреЗ, рд╡рд░реНрд╖, рдорд╣реАрдирд╛, рджрд┐рдиред рддрджрдиреБрд╕рд╛рд░, рдкрд╣рд▓реЗ рдирдВрдмрд░ рдХреЛ рд╕реНрдЯреИрдХ рд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдорд╣реАрдиреЗ рдХреЗ рджрд┐рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

  S "рд╡рд░реНрддрдорд╛рди рд╕рдордп: sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рджрд┐рди)
 S "-" sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рдорд╛рд╣)
 S "-" sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рд╡рд░реНрд╖)
 S "" sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рдШрдВрдЯреЗ)
 S "-" sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рдорд┐рдирдЯ)
 S "-" sockt_a WriteSocket THROW
 S> D (D) sockt_a WriteSocket THROW (рд╕реЗрдХрдВрдб)
 S "-" sockt_a WriteSocket THROW
 S> D (D.) sockt_a WriteSocket THROW (рдорд┐рд▓реАрд╕реЗрдХрдВрдб) 


рдпрд╣ рднрдпрд╛рдирдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рдлреЛрд░реНрдЯ рдХреА рд╕реБрдВрджрд░рддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рдЕрдкрдорд╛рди рдХреЛ рдХреИрдВрдбреА рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рд╣реА рдкрд╛рда 7 рдореЗрдВ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ 3 рдмрд╛рд░ред рдмреЗрд╢рдХ, рдЖрдк рдПрдХ рд▓реВрдк рдкрд░ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдкрд╛рда рдХреЛ рдкрдврд╝рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред
рдХрд┐рд▓реЗ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╢рдмреНрджреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

  : send_value S> D (D.) sockt_a WriteSocket THROW;
 : send_delimeter sockt_a WriteSocket THROW; 


рддрд╛рд░реНрдХрд┐рдХ, рд╕реНрдкрд╖реНрдЯ рдФрд░ рдкрдврд╝рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиред {рд░рд┐рдорд╛рд░реНрдХ: рдПрд╕> рдбреА рд╢рдмреНрдж рд╕реНрдЯреИрдХ рдХреЗ рд╢реАрд░реНрд╖ рддрддреНрд╡ рдХреЛ рджреЛрд╣рд░реЗ рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рддрд╛ рд╣реИред рд╢рдмреНрдж (рдбреАред) рдПрдХ рдбрдмрд▓-рдкрд░рд┐рд╢реБрджреНрдзрддрд╛ рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдкрддреЗ рдФрд░ рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд╕реНрдЯреИрдХ рдкрд░ рдзрдХреЗрд▓рддрд╛ рд╣реИред "

 : рджрд┐рди send_value;
 : рдорд╣реАрдирд╛ send_value;
 : рд╡рд░реНрд╖ send_value;
 : рдШрдВрдЯреЗ send_value;
 : рдорд┐рдирдЯ send_value;
 : рд╕реЗрдХрдВрдбреНрд╕ send_value;
 : рдорд┐рд▓реАрд╕реЗрдХреЗрдВрдб send_value; 


рдЕрднреА рднреА рднрдпрд╛рдирдХ рд╣реИред рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдХрд┐рд▓реЗ рдХреА рднрд╛рд╖рд╛ рдХреА рдПрдХ рдкреНрд░рдореБрдЦ рд╡рд┐рд╢реЗрд╖рддрд╛ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддреА рд╣реИред рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢рдмреНрдж рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

 : make_value CREATE DOES> DROP send_value;
 : make_values тАЛтАЛ0 DO make_value LOOP; 


рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдореЗрдХ_рд╡реЗрд▓реНрдпреВ рд╢рдмреНрдж рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд╡рд░реНрдгреЛрдВ рдХреЗ рдЕрдЧрд▓реЗ рд╕реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдЧрд╛, рдЬреЛ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╢рдмреНрджрдХреЛрд╢ рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рд░рдЦреЗрдЧрд╛ ред рдЗрд╕ рдирдП рд╢рдмреНрдж рдХрд╛ рд╢рдмреНрджрд╛рд░реНрде рд╢рдмреНрдж DOES> рдХреЗ рдмрд╛рдж рд╢рдмреНрдж рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рд╣рдо рдРрд╕реА рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рд╛рдорд╛рдиреНрдп рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдПрдХрдЬреБрдЯ рд╣реЛрддреА рд╣реИрдВред

  7 рдореЗрдХ_рд╡реЗрд▓реНрд╕ рдбреЗ рдордВрде рдИрдпрд░ рдЖрд╡рд░реНрд╕ рдорд┐рдирдЯреНрд╕ рд╕реЗрдХрдВрдбреНрд╕ рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб 


рдФрд░ рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд▓рд┐рдП

 : make_delimeter рдмрдирд╛рдПрдВ, DOES> 1 send_delimeter;
 : make_delimeters 0 DO make_delimeter LOOP;

 BL CHAR - CHAR: 3 рдореЗрдХрдбреЗрд▓рдореАрдЯрд░: - _ 


рдЕрдм рд╣рдо рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

 рд╕рдордп рдФрд░ рджрд┐рдирд╛рдВрдХ
 рджрд┐рди - рдорд╣реАрдирд╛ - рд╡рд░реНрд╖ _ рдШрдВрдЯреЗ: рдорд┐рдирдЯ: рд╕реЗрдХрдВрдб: рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб 


рдХрдиреЗрдХреНрд╢рди рдлрд╛рдбрд╝ рджреЛ

  sockt_a CloseSocket THROW 


рдФрд░ рд╕реЙрдХреЗрдЯ рд╕рд╛рдлрд╝ рдХрд░реЗрдВ

  рд╕реЙрдХреЗрдЯреНрд╕рд▓реЗрдирдЕрдк рдереНрд░реЙрдЗрдб 


рд╡рд╣ рд╕рдм рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЪрд░рдгреЛрдВ рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдВрдХрд▓рди рд╡реИрдХрд▓реНрдкрд┐рдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХрд┐рд▓реЗ рдХреА рдПрдХ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдлреЛрд░реНрдЯ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рдХрдо рдЯрд┐рдкреНрдкрдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдЬреЛ рд▓реЛрдЧ рд╕рд╛рд╡рдзрд╛рди рдереЗ, рдЙрдиреНрд╣реЛрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╣рдордиреЗ рдореВрд▓ рд╢рдмреНрджреЛрдВ рдХреЛ рдмреГрд╣рджрд╛рдиреНрддреНрд░ рдФрд░ рдорд╛рдЗрдирд╕ рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдЬрд╡рд╛рдм рдиреАрдЪреЗ рд╣реИред

рдХреЙрдореЗрдб рдХреЛрдб


 ~ nn \ lib \ sock2.f 
 рд▓рд┐рдм \ _ рд╕реБрд╡рд┐рдзрд╛ \ _ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ

 80 CONSTANT рдкреЛрд░реНрдЯ
 0 VALUE рд╕реЙрдХрдЯ
 0 VALUE sockt_a

 : send_value S> D (D.) sockt_a WriteSocket THROW;
 : send_delimeter sockt_a WriteSocket THROW;

 : make_value CREATE DOES> DROP send_value;
 : make_values тАЛтАЛ0 DO make_value LOOP;

 7 рдореЗрдХ_рд╡реЗрд▓реНрд╕ рдбреЗ рдордВрде рдИрдпрд░ рдЖрд╡рд░реНрд╕ рдорд┐рдирдЯреНрд╕ рд╕реЗрдХрдВрдбреНрд╕ рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб 

 : make_delimeter рдмрдирд╛рдПрдВ, DOES> 1 send_delimeter;
 : make_delimeters 0 DO make_delimeter LOOP;

 : рдкрд░рд┐рднрд╛рд╖рд┐рдд ::;

 BL CHAR - CHAR: 3 рдореЗрдХрдбреЗрд▓рдореАрдЯрд░: - _



 рдкрд░рд┐рднрд╛рд╖рд┐рдд: рд╕рдордп рдФрд░ date_server 

                 рд╕реЙрд░реНрдХреНрд╕рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдереНрд░реЙред "рд╕реЙрдХреЗрдЯреНрд╕ рдХреА рд╢реБрд░реБрдЖрдд" рд╕реА.рдЖрд░. 
                 CreateSocket THROW TO socktред "рд╕реЙрдХреЗрдЯ рдиреЗ" CR рдмрдирд╛рдпрд╛

                 port sockt BindSocket THROWред "рд╕реЙрдХреЗрдЯ рдмрд╛рдЗрдВрдбреЗрдб" CR
                 Sockt ListenSocket THROWред "рд╕реБрдиреЛ" CR

                 sockt AcceptSocket THROW TO sockt_aред "рдЗрд╕рд╕реЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдВ:" 
                 sockt_a GetPeerIP & Port THROW SWAP OcA TYPEред "port:"ред 

                 S "рд╡рд░реНрддрдорд╛рди рд╕рдордп:" sockt_a WriteSocket THROW

                 рд╕рдордп рдФрд░ рджрд┐рдирд╛рдВрдХ 

                 рджрд┐рди - рдорд╣реАрдирд╛ - рд╡рд░реНрд╖ _ рдШрдВрдЯреЗ: рдорд┐рдирдЯ: рд╕реЗрдХрдВрдб: рдорд┐рд▓рд┐рд╕реЗрдХрдВрдб  

                 sockt_a CloseSocket THROW 

                 рд╕реЙрдХреЗрдЯреНрд╕рд▓реЗрдирдЕрдк рдереНрд░реЙрдЗрдб 
 ;

 рд╕рдордп рдФрд░ date_server  

Source: https://habr.com/ru/post/In209818/


All Articles