这种情况:你可以发送图像而不拖延其他数据通过相同的java.net.socket吗?
我正在一个项目中,我需要能够发送一个或多个图像一次/从服务器以及许多其他类型的数据表示与文本。目前完成的方式是发送一条消息,其中指出“大小为x的传入图像将被用作y”(当然,这不是“制定”的),然后我调用一个读取下一个x字节通过DataInputStream。起初,我遇到了延迟搞砸的一些问题,但是我让服务器产生了一个新的线程来发送“传入图像”消息,然后等待客户端响应时设置的标志为“我准备好了为图像“消息。它现在以某种方式工作,但如果在传输图像时发送了其他任何内容(例如聊天消息),则表示BufferedReader的消息将作为原始字节读取并用作图像的一部分。因此,当有图像正在发送时,我将不得不阻止所有传出数据(并将其添加到队列中)。但是这看起来非常错误和烦人,因为应用程序的用户在接收/上传大图像时将无法聊天。
这就是我需要的: 所以,我需要设置一个独立的通道用于原始数据。据我所知,从一些修补,我将不得不在一个新的端口上建立一个新的套接字,这似乎是不必要的。另一种方式,我可以看到要解决这个问题,将以某种方式使用“这是文本/原始数据”位标记每个数据包,但我不知道如何使用java做到这一点?当你向流写入信息(包含该信息的每个数据包将包含)时,是否可以将信息添加到数据包标题中,然后在另一端读取数据包数据并相应地执行操作?正如你所看到的,我没有很多网络方面的经验,也没有很长时间使用过Java。这也是我在这里的第一篇文章,所以要善良。如果有什么不清楚的地方,请问,我会指定。欢迎所有想法! (有可能是一个标准的方法来做到这一点?)
非常感谢!
好,非常感谢:)我会看一会这个问题,而且很可能去一个单独的数据连接? *查看如何在同一个端口上设置多个连接* – 2010-12-22 21:45:59
您只需打开与第一个连接相同的第二个连接即可。服务器端可以在一个循环中的服务器套接字上接受。 – 2010-12-23 00:25:38