Программирование Python Socket
Содержание
Программирование сокетов - одна из самых фундаментальных технологий программирования компьютерной сети . Сокет является конечной точкой двусторонней линии связи между двумя программами, запущенными в сети. Клиент и сервер могут обмениваться данными записи и чтения из своих гнезд. У Python есть довольно простой способ начать с интерфейса сокета. Модуль сокетов Pythons обеспечивает доступ к интерфейсу сокетов BSD . Он доступен для всех современных Unix-систем: Windows, Mac OS X, BeOS, OS / 2 и, возможно, дополнительных платформ.
Программирование Socket Python имеет два раздела:
- Программа Socket Socket Python
- Программа Python Client Socket
Программа Server Socket Program
Программа Socket Socket представляет собой приложение на основе Python Console . Эта программа выступает в роли сервера и слушает запрос клиентов из порта № 8080.
server.bind((LOCALHOST, PORT)) server.listen(1)
Когда серверный сокет принимает запрос со стороны клиента, он считывает данные с клиента, а также записывает ответ на подключенную клиентскую программу.
Пример Python Server Socket Example (Server.py)
import socket LOCALHOST = "127.0.0.1" PORT = 8080 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((LOCALHOST, PORT)) server.listen(1) print("Server started") print("Waiting for client request..") while True: clientConnection,clientAddress = server.accept() print("Connected clinet :" , clientAddress) data = clientConnection.recv(1024) print("From Client :" , data.decode()) clientConnection.send(bytes("Successfully Connected to Server!!",'UTF-8')) clientConnection.close()
Программа Python Client Socket (Client.py)
Python Client Socket подключен к порту 8080 Программы Socket Socket Python и IP-адрес (127.0.0.1) серверного компьютера. Здесь мы приводим 127.0.0.1 , потому что Сервер и Клиент работают на одном компьютере. Если клиентская программа работает на другом компьютере, вы можете указать IP-адрес этой машины.
client.connect(SERVER, PORT)
Когда программа Python Client запустится, она подключится к программе Socket Python Socket Program и ожидает ввода с клиентской стороны. Когда вы вводите сообщение, оно будет отправлено на сервер, а затем вы также увидите ответные сообщения со стороны сервера.
Пример клиента Socket Python (client.py)
import socket SERVER = "127.0.0.1" PORT = 8080 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((SERVER, PORT)) client.sendall(bytes("This is from Client",'UTF-8')) data = client.recv(1024) print(data.decode()) client.close()
Как запустить эту программу?
Создайте программу Socket Socket Python (Server.py) и Python Client Socket Program (client.py) в двух отдельных файлах. Когда вы закончите кодирование, сначала вы должны запустить Python Server Socket Program из командной строки DOS (консоль), затем вы получите сообщение «Server Started ...» и «Ожидание запроса клиента» на экране DOS, где серверная программа.
Следующим шагом является запуск Python Client Socket Program из приглашения (консоли) DOS на том же компьютере или других компьютерах в той же сети. Когда вы запустите клиентскую программу, она установит соединение с сервером и отправит сообщение («Это от клиента») с клиентской стороны. После получения сообщения с клиентской стороны сервер отправляет сообщение клиенту «Успешно подключен к серверу!». Это ... теперь вы можете видеть, что клиентская программа и серверная программа обмениваются друг с другом.
Программирование асинхронного сокета (чтение-запись с обеих сторон)
В приведенном выше Пример:е вы можете просто отправить одно сообщение от клиента, а также только одно сообщение возврата с сервера. Если вы хотите неоднократно подключаться и связываться с клиентом и сервером, вы должны реализовать цикл while для отправки и получения данных друг с другом.
Пример Python Server Socket (Server.py)
import socket LOCALHOST = "127.0.0.1" PORT = 8080 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind((LOCALHOST, PORT)) server.listen(1) print("Server started") print("Waiting for client request..") clientConnection,clientAddress = server.accept() print("Connected clinet :" , clientAddress) msg = '' while True: in_data = clientConnection.recv(1024) msg = in_data.decode() if msg=='bye': break print("From Client :" , msg) out_data = input() clientConnection.send(bytes(out_data,'UTF-8')) print("Client disconnected....") clientConnection.close()
Пример Python Socket Client (client.py)
import socket SERVER = "127.0.0.1" PORT = 8080 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) client.connect((SERVER, PORT)) client.sendall(bytes("This is from Client",'UTF-8')) while True: in_data = client.recv(1024) print("From Server :" ,in_data.decode()) out_data = input() client.sendall(bytes(out_data,'UTF-8')) if out_data=='bye': break client.close()
Следующим шагом является запуск Python Client Socket Program из приглашения (консоли) DOS на том же компьютере или других компьютерах в той же сети. Когда вы запустите клиентскую программу, она установит соединение с сервером и отправит сообщение («Это от клиента») с клиентской стороны. После получения сообщения с клиентской стороны сервер ожидает ввода со стороны сервера. Затем вы можете ввести сообщение со стороны сервера и нажать клавишу ввода. В то же время клиент получает это сообщение и ожидает ввода с клиентской стороны. Снова вы можете ввести сообщение с клиентской стороны и нажать клавишу ввода. Теперь вы можете видеть, как сервер и клиент взаимодействуют неоднократно. Это сообщение вы можете продолжить, чтобы отправить «bye» с клиентской стороны.
Источник: net-informations.com