如何发送文字和图像?

时间:2019-03-02 13:22:25

标签: python image sockets networking

在我的聊天应用程序中,现在只能发送文本。我正在尝试添加还可以发送图像的功能。但是,我有一个问题。接收数据时,如何区分照片和文字?我问这是因为这两个过程完全不同。在其中一个中,我们使用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 :(得分:0)

一旦它在网络上,一切都是字节。要增加对图像的支持,您只需要发送一些消息,说“下一张图像”。希望您的协议已经具有一些“控制消息”,您可以将其用于此目的。

如果您想让协议保持“可读性”(即,您希望所有字节都是明智的UTF-8),则可以在发送图像之前使用base 64编码或类似方法将图像转换为“文本”。但这可能不是必需的。