π₯ ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅: ΠΏΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² π₯
import socket
def start_chat():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind(('localhost', 12345))
server_socket.listen(1)
print('Π‘Π΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ...')
while True:
client_socket, client_address = server_socket.accept()
print(f'ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΎΡ {client_address}')
# ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
while True:
message = client_socket.recv(1024).decode('utf-8')
print(f'ΠΠΎΠ»ΡΡΠ΅Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°: {message}')
# ΠΠ΄Π΅ΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ
if message == 'exit':
break
print(f'ΠΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ {client_address} Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΎ')
client_socket.close()
server_socket.close()
if __name__ == '__main__':
start_chat()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΌΡ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΡΠΈΠΊΠ» Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠ²Π΅ΡΠΎΠ² ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°Π΄ΡΠ΅Ρ Ρ
ΠΎΡΡΠ° ΠΈ ΠΏΠΎΡΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π° ΡΠ²ΠΎΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π£Π΄Π°ΡΠΈ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°ΡΠ° Π½Π° Python!
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅
ΠΠΈΡΠ°ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ Π½Π° Python ΠΌΠΎΠΆΠ½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½ΠΎ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Socket. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅.
Π¨Π°Π³ 1: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°
Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Socket Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ.
import socket
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠΎΡΡ ΠΈ IP-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°
server_host = 'localhost'
server_port = 12345
# ΠΡΠΈΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΠΎΠΊΠ΅Ρ ΠΊ Π°Π΄ΡΠ΅ΡΡ ΠΈ ΠΏΠΎΡΡΡ
server_socket.bind((server_host, server_port))
# Π‘Π»ΡΡΠ°Π΅ΠΌ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
server_socket.listen()
print(f"Π‘Π΅ΡΠ²Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Π½Π° {server_host}:{server_port}")
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΡΠΎΠΊΠ΅Ρ, ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π΅Π³ΠΎ Ρ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΈ ΠΏΠΎΡΡΠΎΠΌ, ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°Π΅ΠΌ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π¨Π°Π³ 2: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
ΠΠΎΡΠ»Π΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΡΠ°ΡΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΅Π³ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
import threading
def handle_client(client_socket, address):
while True:
# ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
data = client_socket.recv(1024).decode('utf-8')
if not data:
# ΠΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Ρ, ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΡΡ
print(f"{address} ΠΎΡΠΊΠ»ΡΡΠΈΠ»ΡΡ.")
break
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ
broadcast(data)
# ΠΠ°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Ρ
client_socket.close()
def broadcast(message):
for client, _ in clients:
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ
client.send(message.encode('utf-8'))
# Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ²
clients = []
while True:
# ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
client_socket, address = server_socket.accept()
# ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Π² ΡΠΏΠΈΡΠΎΠΊ
clients.append((client_socket, address))
# ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΡΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ
client_thread = threading.Thread(target=handle_client, args=(client_socket, address))
client_thread.start()
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ handle_client, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΡ Π²ΡΠ΅ΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΠΌ ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΡΡΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΡΡΡ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ broadcast, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Ρ ΡΡΠΈΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ.
Π¨Π°Π³ 3: ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΡΠ΅ΡΠ΅Π· ΡΠΎΠΊΠ΅Ρ
Π’Π΅ΠΏΠ΅ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π°Ρ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ, Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ.
import socket
# Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Ρ
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ΠΠ°Π΄Π°Π΅ΠΌ ΠΏΠΎΡΡ ΠΈ IP-Π°Π΄ΡΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°
server_host = 'localhost'
server_port = 12345
# ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ
client_socket.connect((server_host, server_port))
while True:
# ΠΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
message = input("ΠΠ²Π΅Π΄ΠΈΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅: ")
# ΠΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅ΡΡ
client_socket.send(message.encode('utf-8'))
if message == 'exit':
# ΠΡΠ»ΠΈ Π²Π²Π΅Π΄Π΅Π½ΠΎ 'exit', Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈ Π²ΡΡ
ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠΈΠΊΠ»Π°
client_socket.close()
break
# ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌ ΠΎΡΠ²Π΅Ρ ΠΎΡ ΡΠ΅ΡΠ²Π΅ΡΠ°
data = client_socket.recv(1024).decode('utf-8')
print("ΠΡΠ²Π΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°:", data)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Ρ, Π·Π°Π΄Π°Π΅ΠΌ IP-Π°Π΄ΡΠ΅Ρ ΠΈ ΠΏΠΎΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΊ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ Π½Π°ΡΠΈΠ½Π°Π΅ΠΌ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΌΡ Π²Π²ΠΎΠ΄ΠΈΠΌ 'exit', ΠΌΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΠΎΠΊΠ΅Ρ ΠΈ Π²ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠΈΠΊΠ»Π°.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Π’Π΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π° Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°ΡΠ° Π½Π° ΠΏΠΈΡΠΎΠ½Π΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Socket. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°ΡΡ Π΅Π³ΠΎ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π΅Π³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°Π΄Π΅ΡΡΡ, ΡΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΌΠΎΠ³ Π²Π°ΠΌ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ½Π»Π°ΠΉΠ½ ΡΠ°Ρ Π½Π° ΠΏΠΈΡΠΎΠ½Π΅. Π£Π΄Π°ΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ!