Как я могу отправить как текст, так и изображение? - PullRequest
0 голосов
/ 02 марта 2019

В моем приложении чата, только текст может быть отправлен прямо сейчас.Я пытаюсь добавить функцию, в которой изображения также могут быть отправлены.Однако есть один момент, в котором я застрял. Когда я получаю данные, как я могу различить фотографию и текст?Я спрашиваю об этом, потому что эти два совершенно разные процедуры.В одном из них мы кодируем его с помощью UTF-8 и отправляем, а в другом мы отправляем байты.На стороне сервера, как я могу их различить?

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

Поскольку мой код слишком длинный, я предпочитаю не добавлять все это здесь.Вы можете получить к нему доступ через мой github https://github.com/suleymanyaman/randomchatserver

Клиент

def sendphoto():
 dlg = QFileDialog()
 dlg.setFileMode(QFileDialog.AnyFile)
 img_dir = QStringListModel()

 if dlg.exec_():
     img_dir = dlg.selectedFiles()[0]
     data = open(r'{}'.format(img_dir),'rb').read()
     s.send(data)

Сервер

    while 1:
      msg = client.recv(100000000).decode("utf-8")

1 Ответ

0 голосов
/ 02 марта 2019

Как только он в сети, все байты.Чтобы добавить поддержку изображений, вам просто нужно отправить сообщение с надписью «Изображение идет дальше».Надеемся, что в вашем протоколе уже есть «управляющие сообщения», которые вы можете использовать для этого.

Если вы хотите, чтобы протокол был «читабельным» (т. Е. Вы предпочитаете, чтобы все байты были разумными UTF-8), вы можете использоватькодировка base 64 или аналогичная, чтобы превратить ваши изображения в «текст» перед их отправкой.Но это, вероятно, не обязательно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...