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

Как сделать приложение CLI в чате в Python

Вступление Здравствуйте, ребята в этом уроке, я направлю вас к созданию чата командной строки … Tagged With Python, Tutorial, Codenewbie, программирование.

Вступление

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

Примечание Если у вас никогда не было предыдущего опыта с разъемами, я объясню все подробно.

Что такое гнезда?

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

Программирование сокета это способ сделать два узла в сети, чтобы общаться друг с другом. Один сокет прослушивает конкретный порт на IP (сервер), в то время как другой сокет обращается к другому, чтобы сформировать соединение (клиент).

Программирование сокета является основой самой интернет -системы, в глубине всей этой связи, мы видим, что сейчас дни возникают от точки до точки общения.

Модуль розетки Python Поставляется по умолчанию с стандартной библиотекой Python, поэтому вам не нужно ничего устанавливать, чтобы начать.

Структура нашего проекта

Как мы видели выше, это узлы, которые разговаривают друг с другом, и в нашем проекте мы будем реализовать два узла, используя сокеты, один в качестве клиента, а другой – в качестве сервера.

Эти два узла будут отправлять сообщения два друг другу как обычные приложения для чата.

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

Начать работу с розетками очень просто, вы можете использовать сокет в различных двунаправленный Общение, например, мы можем использовать их, чтобы получить Ip из имя хоста как показано ниже

Python 3.5.3 (default, Sep 27 2018, 17:25:39) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import socket 
>>> socket.gethostname() #getting our local host name
'kalebu-PC'
>>> socket.gethostbyname('www.google.com') #getting IP of Google 
'172.217.170.4'

Как мы видим в приведенном выше примере, мы смогли получить наше локальное имя хоста, используя метод ** GethostName **, а также мы смогли получить IP -адрес Google с использованием метода GethostbyName.

Построение нашего первого розетки (узел)

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

Пример протоколов связи включает протокол связи передачи (TCP), протокол Datagram пользователя (UDP), протокол передачи файлов (FTP) и и т.д

При создании нашего приложения в чате мы будем использовать протокол передачи передачи (TCP), зная, как это работает, будет оценено, но вам действительно не нужно.

Давайте создадим наш первый узел

При создании гнезда (узла) в Python для TCP мы передадимся к основным параметрам, которые

  • разъем. AF_INET означает, что сокет принадлежит к семье IPv4
  • разъем. Sock_stream означает соединение, настроенное с использованием протокола TCP

Напишите следующее на своем Python Shell Чтобы создать свой первый узел в Python

>>> import socket 
>>> node = socket.socket(socket.AF_INET, socket.SOCK_SaTREAM)

Поздравляю У тебя есть только твой первый Узел В Python теперь давайте продолжим построить наше приложение.

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

Создание серверного узла

Я отличный поклонник объекта ** Ориентированное программирование (OPP) *, Я использовал класс, чтобы абстрактно определить свой узел сервера с помощью реализованного метода для получения и отправки связи от клиента.

Примечание

Во время прослушивания наш сервер ждет, поэтому наш код не получает несколько SMS -отправлена от клиента, чтобы заняться этим, нам нужно применить многопоточное, поэтому я сделал то же самое с методом получения, чтобы он мог продолжать получать самостоятельно, не блокируя наше приложение

Ниже приведено Полный код для нашего Сервер Скрипт , Я расскажу подробности позже, просто доказательство прочитайте это

import socket 
import threading
​
class ServerNode:
    def __init__(self):
        self.node = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        port_and_ip = ('127.0.0.1', 12345)
        self.node.bind(port_and_ip)
        self.node.listen(5)
        self.connection, addr = self.node.accept()
​
    def send_sms(self, SMS):
        self.connection.send(SMS.encode())
​
    def receive_sms(self):
        while True:
            data = self.connection.recv(1024).decode()
            print(data)
​
    def main(self):
        while True:
            message = input()
            self.send_sms(message)
​
server = ServerNode()
always_receive = threading.Thread(target=server.receive_sms)
always_receive.daemon = True
always_receive.start()
server.main()

Код объяснение

Привязывание IP -адреса и порта

port_and_ip = ('127.0.0.1', 12345)
self.node.bind(port_and_ip)

Привязка* ip addres* s и Порт к нашему узлу это, как будто мы объявляем в Дом IP -адрес в Комната Из порта, где живет наш серверный узел, поэтому клиент должен прийти в эту комнату, чтобы подключиться.

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

В этой демонстрации мы запустили оба двух отдельных сценария на одиночная машина , но код также работает над двумя SEPRATE PC Вам просто нужно быть в той же сети.

Слушая входящее соединение

self.node.listen(5)
self.connection, addr = self.node.accept()

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

метод send_sms ()

def send_sms(self, SMS):
    self.connection.send(SMS.encode())

Этот метод только с одной строкой кода принимает SMS как параметр и отправьте его в клиентский узел, Обратите внимание, что Чтобы отправить SMS с помощью сокетов, это должно быть в двоичном языке, поэтому у нас есть кодируется Это .

Метод eCete_sms ()

def receive_sms(self):
    while True:
        data = self.connection.recv(1024).decode()
        print(data)

Этот метод используется для Получать * *Сообщение от ** Clien T, в течение всего срока службы программы, у нас есть ** потоки **, чтобы предотвратить приложение замораживание Анкет

Метод Main ()

def main(self):
    while True:
        message = input()
        self.send_sms(message)

Этот метод используется для Приглашение ** Сообщение с сервера и Отправить ** это клиентам

Заканчивая вещи

server = ServerNode()
always_receive = threading.Thread(target=server.receive_sms)
always_receive.daemon = True
always_receive.start()
server.main()

Вышеуказанные 5 строк кода предназначены для создания экземпляра сервера, а затем запустить его путем потока метода приема

Создание клиентского узла

Почти все на узле сервера аналогично узлу клиента, за исключением того факта, что клиент -узлы подключаются к серверу вместо того, чтобы слушать от подключения, поэтому большая разница наблюдается на конструкторе, но все почти одинаково.

import socket 
import threading
​
class ClientNode:
    def __init__(self):
        self.node = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        port_and_ip = ('127.0.0.1', 12345)
        self.node.connect(port_and_ip)
​
    def send_sms(self, SMS):
        self.node.send(SMS.encode())
​
    def receive_sms(self):
        while True:       
            data = self.node.recv(1024).decode()
            print(data)
​
    def main(self):
        while True:
            message = input()
            self.send_sms(message)
​
Client = ClientNode()
always_receive = threading.Thread(target=Client.receive_sms)
always_receive.daemon = True
always_receive.start()
Client.main()

Как только вы запустите код, вывод будет чем -то, как показано ниже, обязательно начните запустить Server.py Перед запуском Client.py.

Ну, вот и все, если вы сделали все, как показано выше двух ваших узлов, должно быть готовым отправлять друг другу сообщения.

Если вы найдете этот учебник интересным, не стесняйтесь поделиться им со своими коллегами.

Оригинальная статья можно найти в kalebujordan.com

Калебу/Командный линий-каттинг-система питона

Простое приложение для чата CLI, сделанное на Python с использованием сокетов

вступление

Привет, ребята, это репо состоит из исходного кода для простого приложения для чата CLI, сделанного с использованием сокетов в Python

Оригинальная статья

Это репо является продолжением Статья на мой блог Таким образом, вы можете просмотреть его, чтобы увидеть более краткий учебник о том, как все это работает.

Начиная

Чтобы начать, просто клонировать репозиторий, используя git Команда или нажатие кнопки загрузки в правой стороне репозитория

Клонирование

$ git clone https://github.com/Kalebu/Commandline-chatting-system-python
$ cd Commandline-chatting-system-python
Commandline-chatting-system-python $ tree
.
├── client.py
├── README.md
└── server.py
0 directories, 3 files

Это репо состоит из двух Скрипты Python названный client.py и Server.py Как я объяснил в учебном пособии, в результате чего Server.py будет послужить нашим серверным узлом и client.py будет послужить нашим клиентским узлом.

Завершил скрипт

Примечание

Вам следует начать запускать сценарий сервера перед запуском …

Оригинал: “https://dev.to/kalebu/how-to-make-cli-chat-application-in-python-58fb”