在我的聊天应用程序中,现在只能发送文本。我正在尝试添加还可以发送图像的功能。但是,我有一个问题。接收数据时,如何区分照片和文字?我问这是因为这两个过程完全不同。在其中一个中,我们使用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")
答案 0 :(得分:0)
一旦它在网络上,一切都是字节。要增加对图像的支持,您只需要发送一些消息,说“下一张图像”。希望您的协议已经具有一些“控制消息”,您可以将其用于此目的。
如果您想让协议保持“可读性”(即,您希望所有字节都是明智的UTF-8),则可以在发送图像之前使用base 64编码或类似方法将图像转换为“文本”。但这可能不是必需的。