Рубрики
Без рубрики

Программирование Python Socket – сервер, пример клиента

Python Socket Programming, сервер сокета Python, пример сокета Python, сокет Python Слушайте, урок сокета Python, клиент Python Socket, Bind, Connect

Автор оригинала: Pankaj Kumar.

Хороший день учащихся! В нашем предыдущем уроке мы обсудили о Unittest Modest Module Python. Сегодня мы посмотрю в пример программирования Python Socket. Мы создадим Python Socket Server и клиентские приложения.

Программирование сокета Python

Чтобы понять программирование розетки Python, нам нужно знать о трех интересных темах – Стекет сервера , Клиент сокета и Розетка Отказ

Итак, что такое сервер? Ну, сервер – это программное обеспечение, которое ждет клиентов и служит или обрабатывает их соответственно.

С другой стороны, клиент запрашивает эту услугу. Запрос клиентской программы для некоторых ресурсов на сервер и сервер отвечает на этот запрос.

Разъем является конечной точкой двунаправленного канала связи между сервером и клиентом. Розетки могут общаться в процессе, между процессами на одной и той же машине или между процессами на разных машинах. Для любой связи с удаленной программой мы должны подключаться через порт сокет.

Основная задача этого учебного пособия по программированию сокетов состоит в том, чтобы познакомить вас, как Socket Server и Client обмениваются друг с другом. Вы также узнаете, как написать программу Python Socket Server.

Пример сокета Python

Ранее мы говорили, что клиентские запросы на сокет для некоторых ресурсов на сервер сокета и сервер отвечает на этот запрос.

Таким образом, мы разработаем как сервер, так и клиентскую модель, чтобы каждый мог общаться с ними. Шаги можно считать так.

  1. Python Socket Server Server выполняется сначала и ждать любого запроса
  2. Python Socket Client Program поначалу начнется разговор.
  3. Затем серверная программа ответит соответственно клиентским запросам.
  4. Клиентская программа прекращается, если пользователь вступает в сообщение «BYE». Серверная программа также завершится, когда клиентская программа заканчивается, это необязательно, и мы можем сохранить серверную программу, запущенную на неопределенный срок или завершаться с некоторой конкретной командой в запросе клиента.

Python Socket Server

Мы сохраним Python Socket Server Program AS Socket_server.py Отказ Чтобы использовать соединение сокета Python, нам нужно импортировать розетка модуль.

Затем, последовательно, нам нужно выполнить некоторую задачу для установления соединения между сервером и клиентом.

Мы можем получить адрес хоста, используя Socket.Geethstname () функция. Рекомендуется к адресу пользовательского порта выше 1024, поскольку номер порта меньше 1024 зарезервирован для стандартного интернет-протокола.

См. Ниже пример сервера Python Socket Server, комментарии помогут вам понять код.

import socket


def server_program():
    # get the hostname
    host = socket.gethostname()
    port = 5000  # initiate port no above 1024

    server_socket = socket.socket()  # get instance
    # look closely. The bind() function takes tuple as argument
    server_socket.bind((host, port))  # bind host address and port together

    # configure how many client the server can listen simultaneously
    server_socket.listen(2)
    conn, address = server_socket.accept()  # accept new connection
    print("Connection from: " + str(address))
    while True:
        # receive data stream. it won't accept data packet greater than 1024 bytes
        data = conn.recv(1024).decode()
        if not data:
            # if data is not received break
            break
        print("from connected user: " + str(data))
        data = input(' -> ')
        conn.send(data.encode())  # send data to the client

    conn.close()  # close the connection


if __name__ == '__main__':
    server_program()

Таким образом, наш сервер сокета Python работает на порту 5000, и он будет ждать запроса клиента. Если вы хотите, чтобы сервер не бросить выйти, когда клиентское соединение закрыто, просто удалите при условии выявления условия и разрыва. Python, пока цикл используется для запуска серверной программы на неопределенный срок и продолжать ожидание запроса клиента.

Python Socket Client.

Мы сохраним клиентскую программу Python Socket как socket_client.py Отказ Эта программа похожа на серверную программу, кроме привязки.

Основное различие между серверной и клиентской программой, в Server Program, ему необходимо связать адрес хоста и адрес порта вместе.

См. Ниже пример клиента Python Socket Code, комментарий поможет вам понять код.

import socket


def client_program():
    host = socket.gethostname()  # as both code is running on same pc
    port = 5000  # socket server port number

    client_socket = socket.socket()  # instantiate
    client_socket.connect((host, port))  # connect to the server

    message = input(" -> ")  # take input

    while message.lower().strip() != 'bye':
        client_socket.send(message.encode())  # send message
        data = client_socket.recv(1024).decode()  # receive response

        print('Received from server: ' + data)  # show in terminal

        message = input(" -> ")  # again take input

    client_socket.close()  # close the connection


if __name__ == '__main__':
    client_program()

Вывод программирования сокета Python

Чтобы увидеть вывод, сначала запустите программу Socket Server. Затем запустите клиентскую программу сокета. После этого напишите что-нибудь из клиентской программы. Затем снова напишите ответ из серверной программы. Наконец, напишите Пока от клиентской программы для завершения обеих программ. Ниже короткое видео покажет, как он работал на моем тестовом запуске серверов сокетов и программ пример клиента.

pankaj$ python3.6 socket_server.py 
Connection from: ('127.0.0.1', 57822)
from connected user: Hi
 -> Hello
from connected user: How are you?
 -> Good
from connected user: Awesome!
 -> Ok then, bye!
pankaj$
pankaj$ python3.6 socket_client.py 
 -> Hi
Received from server: Hello
 -> How are you?
Received from server: Good
 -> Awesome!
Received from server: Ok then, bye!
 -> Bye
pankaj$

Обратите внимание, что Socket Server работает на порту 5000, но клиент также требуется порт сокет для подключения к серверу. Этот порт выполнен случайным образом клиентом Connect Call. В этом случае это 57822.

Итак, вот и все для программирования сокетов Python Socket, сервер Python Soute Server и Programs Client Client.

Ссылка: Официальная документация