рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдиреМрд╕рд┐рдЦрд┐рдП рдкрд╛рдпрдерди рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдиреЗ рдЕрдкрдиреА рдЦреБрдж рдХреА рдЪреИрдЯ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред рдФрд░ рдЕрдЧрд░ рдЬреАрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рднреА, рддреЛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗрд╡рд▓ рдЕрдВрддрд┐рдо рд╕рдкрдирд╛ рд╣реИред
рдХрд┐рд╕реА рдкрд░рд┐рдЪрдп рдХреА рддрд░рд╣
рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдореЗрдВ рдкрд░рд┐рдЪрдп рджреЗрдВ рдХрд┐ рдХрд┐рддрдирд╛ рдХрдиреНрд╡реЗрдВрд╢рди рд╣реИ - рд╣рдо рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯ рдХреЗ рд╕рд╛рде рд╕реНрдерд╛рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреИрдЯ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рднреА рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдЯрд┐рдВрдХрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ GUI рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░реЗрдВрдЧреЗ (
рдЖрдорддреМрд░ рдкрд░ рдпрд╣ рд▓рд┐рдирдХреНрд╕ рд╡рд┐рддрд░рдг рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдЖрддрд╛ рд╣реИ, рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдкрд╛рдпрдерди рдмрд┐рд▓реНрдб рдореЗрдВ рднреА рдорд╛рдирдХ рд╣реИ)ред
рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдирд╛рдо
рдЕрдЬрдЧрд░ рдореЗрдВ рд╕реЙрдХреЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ (рджреНрд╡рд╛рд░рд╛ рдФрд░ рдмрдбрд╝реЗ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ PyS60 рдХреЗ рддрд╣рдд рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдХрд┐рдВрдЧ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛрдб рдорд┐рд▓рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред
рд╣рдорд╛рд░реА рдЪреИрдЯ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдкреНрд░рд╕рд╛рд░рдг рдпреВрдбреАрдкреА рдкреИрдХреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдереАред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдПрдХ рдФрд░ рд╕рдореНрдореЗрд▓рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ - рдкреЛрд░реНрдЯ рд╕рдВрдЦреНрдпрд╛, рдФрд░ рдЗрд╕реЗ 11719 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдиреЗ рджреЗрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдПрдХ рдЕрднрд╛рдЬреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реИ (рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдХреБрдЫ рд╣реИ)ред рдФрд░, рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рдкреЛрд░реНрдЯ, рдЖрдзрд┐рдХрд╛рд░рд┐рдХ IANA рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡реНрдпрд╕реНрдд рдирд╣реАрдВ рд╣реИред
рдПрдХ рд╕реБрдирдиреЗ рд╡рд╛рд▓рд╛ рд╕реЙрдХреЗрдЯ рдмрдирд╛рдПрдВ рдЬреЛ рдХрдВрд╕реЛрд▓ рдХреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢реЛрдВ рд╕реЗ рдкреНрд░рд╕рдиреНрди рдХрд░реЗрдЧрд╛:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.bind(('0.0.0.0',11719)) while 1: message = s.recv(128) print (message)
рд╕реЙрдХреЗрдЯ рдореЗрдВ, рд╣рдо SO_REUSEADDR (рд╕реЙрдХреЗрдЯ рдореЗрдВ рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ "рд╕реБрдирдиреЗ" рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ SO_BROADCAST (рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреИрдХреЗрдЯ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ) рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рддреНрдп рдХреЗ рд▓рд┐рдПред рджрд░рдЕрд╕рд▓, рдХреБрдЫ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрди рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рд╡рд╛рдпрд░рдЯреИрдкрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП, рд╣рдо '0.0.0.0' рдкрддреЗ рд╕реЗ рдЬреБрдбрд╝рддреЗ рд╣реИрдВ - рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╕реБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдк рдкрддрд╛ рдлрд╝реАрд▓реНрдб рдореЗрдВ рд░рд┐рдХреНрдд рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрди рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрддреЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЕрднреА рднреА рдмреЗрд╣рддрд░ рд╣реИред
рд╣рдо рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдПрдХ рдкреНрд░рд╕рд╛рд░рдг "рд╕реВрдВрдШ" рднреА рдмрдирд╛рддреЗ рд╣реИрдВ (рдкрд╣рд▓реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП):
import socket sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) while 1: sock.sendto('broadcast!',('255.255.255.255',11719))
рдкреНрд░реЗрд╖рд┐рдд рднрд╛рдЧ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдХреЗрд╡рд▓ SO_BROADCAST рд╡рд┐рдХрд▓реНрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдЕрдм рдпрд╣ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЖрд╡рд╢реНрдпрдХ рд╣реИ) рдФрд░ Sendto () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдо рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЕрдкрдиреЗ рдкреИрдХреЗрдЯ рднреЗрдЬрддреЗ рд╣реИрдВред CTRL + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдиреЗрдЯрд╡рд░реНрдХ рдлреНрд▓рдб рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╡рд┐рд╡рд░рдг рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред
рд╡рд┐рдВрдбреЛрдЬ, рд╡рд┐рдВрдбреЛрдЬрд╝, рд╡рд┐рдВрдбреЛрдЬрд╝
рдЯреАрдХрдВрдЯрд░ рд╕рдВрднрд╡рддрдГ рдЕрдЬрдЧрд░ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ (рдФрд░ рдЕрдЬрдЧрд░ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрд╣ рд╕рдмрд╕реЗ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рд╕реНрдерд┐рд░ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ)ред рд▓реЗрдХрд┐рди рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рдкрд┐рдЯреЛрди рдЧрд╛рдЗрдб рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕рд░рд▓ рд╣реИред
рдФрд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЖрдХрд╛рд░ рдХреА рдХреЗрд╡рд▓ рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╢реАрд░реНрд╖рдХ рдХреЗ рд╕рд╛рде, рд╣рдореЗрдВ рдХреЛрдб рдХреА рдХреЗрд╡рд▓ рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
from Tkinter import * tk=Tk() tk.title('MegaChat') tk.geometry('400x300') tk.mainloop()
рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдХреА рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рдХреА рдЧреИрд▓рд░реА рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЪреИрдЯ рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВред рддреЛ, рд╣рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдкрд░ рддрддреНрд╡реЛрдВ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рдЪреИрдЯ рд▓реЙрдЧ, рд╡рд╣ рдХреНрд╖реЗрддреНрд░ рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреЗ рдЙрдкрдирд╛рдо рдФрд░ рд╕рдВрджреЗрд╢ рдкрд╛рда рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рд╕рдВрджреЗрд╢ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреБрдВрдЬреА рдХреЛ рджрдмрд╛рдиреЗ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдВрдЧреЗ, рддреЛ рдЖрдк рдмрдЯрди рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВред
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдпрд╣ рдЖрд╕рд╛рди рд╣реИред рдЪреИрдЯ рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЯреЗрдХреНрд╕реНрдЯ рд╡рд┐рдЬреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рджреЛ рдПрдВрдЯреНрд░реА рдХреЗ рд▓рд┐рдПред рддрддреНрд╡реЛрдВ рдХреЛ рдлреЙрд░реНрдо рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреИрдХрд░ рдкреИрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХреЗрд╡рд▓ рддрддреНрд╡реЛрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдХреЗ рд▓рд┐рдП рд╣реА рдЬрд╛рдирд╛ рдЬрд╛рдПрдЧрд╛, рдХреЗрд╡рд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрдВрдЧрд┐рдд рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдк рдЙрд╕ рдкрдХреНрд╖ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рдЧреЗрдЯреНрд╕ рд╕рдВрд▓рдЧреНрди рдХрд░рдирд╛ рд╣реИ, рдЪрд╛рд╣реЗ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕ рджрд┐рд╢рд╛ рдореЗрдВ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рд▓реЗрдЖрдЙрдЯ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рд╣реИред
from Tkinter import * tk=Tk() tk.title('MegaChat') tk.geometry('400x300') log = Text(tk) nick = Entry(tk) msg = Entry(tk) msg.pack(side='bottom', fill='x', expand='true') nick.pack(side='bottom', fill='x', expand='true') log.pack(side='top', fill='both',expand='true') tk.mainloop()
рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдпрд╛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рд╡реИрд╕реЗ, рдПрдВрдЯреНрд░реА рдХреЛ рд╕реНрдЯрд┐рдВрдЧрд╡рд╛рд░реНрд╕ (рд╡рд┐рдЬреЗрдЯ рдбрд┐рдЬрд╛рдЗрдирд░ рдореЗрдВ рдЯреЗрдХреНрд╕рдЯрд╡рд░реЗрдмрд▓ рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ) рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд┐рдВрдХрд░ рдХреЗ рдкрд╛рд╕ рдПрдХ рд╡рд┐рдзрд┐ рд╣реИ (рдПрдордПрд╕ рдореЗрдВ <рд╕рдордп> <рдлрд╝рдВрдХреНрд╢рди>)ред рдпрджрд┐ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдЕрдВрдд рдореЗрдВ рдЖрдк рдЗрд╕рдХреЗ рдкреБрди: рд╕реНрдерд┐рд░реАрдХрд░рдг рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рджреМрд░рд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдХреБрдЫ рдХреАрд╕реНрдЯреНрд░реЛрдХреНрд╕ рдФрд░ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
from Tkinter import * tk=Tk() text=StringVar() name=StringVar() name.set('HabrUser') text.set('') tk.title('MegaChat') tk.geometry('400x300') log = Text(tk) nick = Entry(tk, textvariable=name) msg = Entry(tk, textvariable=text) msg.pack(side='bottom', fill='x', expand='true') nick.pack(side='bottom', fill='x', expand='true') log.pack(side='top', fill='both',expand='true') def loopproc(): print ('Hello '+ name.get() + '!') tk.after(1000,loopproc) tk.after(1000,loopproc) tk.mainloop()
рд╕рд╛рдВрддреНрд╡рдирд╛ рдореЗрдВ рдПрдХ рдЕрднрд┐рд╡рд╛рджрди рдЪрд▓рд╛ред рдЙрдкрдирд╛рдо рдХреЛ рдмрджрд▓рдХрд░, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░рд╡реЗрд╢ рдХреНрд╖реЗрддреНрд░ рдФрд░ рд╣рдорд╛рд░реЗ рдЪрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдПрдВрдЯрд░ рджрдмрд╛рдХрд░ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрдкрдирд╛ рд╕рдВрджреЗрд╢ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрд╛ рдПрд╣рд╕рд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдпрд╣ рдмрд╛рдБрдз (<рдХрд╛рд░реНрд░рд╡рд╛рдИ>, <рдлрд╝рдВрдХреНрд╢рди>) рд╡рд┐рдЬреЗрдЯ рдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд░ рднреА рдЖрд╕рд╛рди рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╡реЗрдВрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдПрдХ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХрдВрд╕реЛрд▓ рд╕реЗ рд▓реЙрдЧ рдлрд╝реАрд▓реНрдб рдореЗрдВ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╣рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
from Tkinter import * tk=Tk() text=StringVar() name=StringVar() name.set('HabrUser') text.set('') tk.title('MegaChat') tk.geometry('400x300') log = Text(tk) nick = Entry(tk, textvariable=name) msg = Entry(tk, textvariable=text) msg.pack(side='bottom', fill='x', expand='true') nick.pack(side='bottom', fill='x', expand='true') log.pack(side='top', fill='both',expand='true') def loopproc(): log.insert (END,'Hello '+ name.get() + '!\n') tk.after(1000,loopproc) def sendproc(event): log.insert (END,name.get()+':'+text.get()+'\n') text.set('') msg.bind('<Return>',sendproc) tk.after(1000,loopproc) tk.mainloop()
рд▓рдЧрднрдЧ рдХрд┐рдпрд╛ ...
рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рджреВрд╕рд░реЗ рднрд╛рдЧ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рд╣рдореЗрдВ рдПрдХ рддреИрдпрд╛рд░ рдЪреИрдЯ рдорд┐рд▓рддреА рд╣реИред рдЕрдЪреНрдЫрд╛, рдЪрд▓реЛ рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдЕрднреА рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рд╣рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡реЗ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рднреЗрдЬрддреЗ рд╣реИрдВ - рдХреНрдпреЛрдВрдХрд┐ рдЬрдм рд╣рдо рдкреНрд░рд╕рд╛рд░рдг рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реБрдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВрдЧреЗред
import socket from Tkinter import * tk=Tk() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.bind(('0.0.0.0',11719)) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1) text=StringVar() name=StringVar() name.set('HabrUser') text.set('') tk.title('MegaChat') tk.geometry('400x300') log = Text(tk) nick = Entry(tk, textvariable=name) msg = Entry(tk, textvariable=text) msg.pack(side='bottom', fill='x', expand='true') nick.pack(side='bottom', fill='x', expand='true') log.pack(side='top', fill='both',expand='true') def loopproc(): message = s.recv(128) log.insert(END,message) tk.after(1,loopproc) def sendproc(event): sock.sendto (name.get()+':'+text.get(),('255.255.255.255',11719)) text.set('') msg.bind('<Return>',sendproc) tk.after(1,loopproc) tk.mainloop()
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рдЪрдорддреНрдХрд╛рд░ рдирд╣реАрдВ рд╣реБрдЖред рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╕рдХрд░ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреИрдХреЗрдЬ рдХреЗ рдЗрдВрддрдЬрд╛рд░ рдореЗрдВ рдЦрдбрд╝рд╛ рдерд╛ред рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдереНрд░реЗрдб рдЗрддрдирд╛ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдирд╣реАрдВ рдерд╛ рдФрд░ рдмрд╛рдХреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрднреА-рдХрднреА рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рд╕реБрдирдиреЗ рд╡рд╛рд▓реЗ рд╕реЙрдХреЗрдЯ рдХреЛ рдЧреИрд░-рдЕрд╡рд░реЛрдзрдХ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рддрд╛рдХрд┐ рд╕реЙрдХреЗрдЯ рдЦрд╛рд▓реА рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрдВ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдкреНрд░рд╛рдкреНрдд рди рд╣реЛ, рд╣рдо рдХреЛрдб рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рдХреЗ рд╕рд╛рде рд╕рдВрд▓рдЧреНрди рдХрд░рддреЗ рд╣реИрдВред
import socket from Tkinter import * tk=Tk() s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) s.bind(('0.0.0.0',11719)) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1) text=StringVar() name=StringVar() name.set('HabrUser') text.set('') tk.title('MegaChat') tk.geometry('400x300') log = Text(tk) nick = Entry(tk, textvariable=name) msg = Entry(tk, textvariable=text) msg.pack(side='bottom', fill='x', expand='true') nick.pack(side='bottom', fill='x', expand='true') log.pack(side='top', fill='both',expand='true') def loopproc(): s.setblocking(False) try: message = s.recv(128) log.insert(END,message+'\n') except: tk.after(1,loopproc) return tk.after(1,loopproc) return def sendproc(event): sock.sendto (name.get()+':'+text.get(),('255.255.255.255',11719)) text.set('') msg.bind('<Return>',sendproc) tk.after(1,loopproc) tk.mainloop()
"рдФрд░ рдлрд┐рд░ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░реЗрдВ ..."
рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреЛрдб рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ - рд╕рдВрджреЗрд╢ рдЗрдирдкреБрдЯ рдлрд╝реАрд▓реНрдб рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рддреБрд░рдВрдд рдирд╣реАрдВ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ рдФрд░ рд▓реЙрдЧ рд╕реНрд╡рдпрдВ рд╕реНрдХреНрд░реЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрди рд╕рднреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реВрдЪреА рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдореИрдВрдиреЗ рдЙрд╕ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рдХрд╛рд╢ рдбрд╛рд▓рд╛ рд╣реИ рдЬрд╣рд╛рдБ рд╕рд┐рд░рд┐рд▓рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рд╣реЛ рдЧрдИ рд╣реИ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдмрд╛рдХреА рд╕реНрдкрд╖реНрдЯ рд╣реИ):
рдкреАрдПрд╕ рдФрд░ рдордд рднреВрд▓рдирд╛ - рдЕрдЬрдЧрд░ рдХреА рд▓рдВрдмрд╛рдИ 9-10 рдореАрдЯрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИред