这是这种情况:
我正在做一个项目,我需要能够不时地向/从服务器发送一个或多个图像以及许多其他类型的以文本表示的数据。当前完成的方式是发送一条消息,上面写着“传入的大小为 x 的图像将用作 y”(当然,它不是“公式化”的),然后我调用一个读取下一个 x 的方法字节通过 DataInputStream。起初我遇到了一些延迟问题,但我让服务器产生了一个新线程来发送“传入图像”消息,然后等待客户端响应“我准备好了”时设置的标志为图像”消息。它现在以某种方式工作,但是如果在传输图像时发送了其他任何内容,例如聊天消息,用于 BufferedReader 的消息将作为原始字节读取并用作图像的一部分。因此,当正在发送图像时,我将不得不阻止所有传出数据(并将其添加到队列中)。但这似乎非常错误和烦人,因为应用程序的用户在接收/上传大图像时将无法聊天。
这就是我需要的:所以,我要么需要设置一个独立的通道来用于原始数据。据我所知,我将不得不在新端口上设置一个新套接字,这似乎没有必要。我可以看到解决这个问题的另一种方法是以某种方式使用“这是文本/原始数据”位标记每个数据包,但我不知道如何用 java 做到这一点?当您将某些内容写入流(包含该信息的每个数据包都将包含)然后在另一端读取数据包数据并采取相应措施时,您能否将信息添加到数据包标头?
如您所见,我对网络没有太多经验,也没有长时间使用Java。这也是我在这里的第一篇文章,所以请善待。如果有什么不清楚的,请询问,我会具体说明。欢迎所有想法!(可能有一种标准方法可以做到这一点?)
非常感谢!