我的问题是:
我正在使用 tcp 套接字在 java 中构建远程桌面应用程序。我在套接字上创建了一个 PrintWriter/Scanner 流,以在客户端和服务器之间交换鼠标、键盘和屏幕分辨率(主要类型)的命令,效果很好。之后,我在同一个套接字上创建了一个 DataOutputStream/DataInputStream 以将屏幕截图(字节数组)从客户端传输到服务器,然后我的应用程序兑现了。
谁能帮我解决这个问题,非常感谢!
我不知道您所说的“主要类型”是什么意思。它DataOutputStream
是写原始类型,如果这就是你的意思,不是BufferedWriter.
在这种情况下,你应该使用DataOutputStream
一切。将事物转换为用于接线的字符串是没有意义的,BufferedWriter
只是不得不在另一端再次解析它们,Scanner.
还有空间成本。最后,由于缓冲问题,您无论如何都不能这样做。
不应以这种方式使用相同的套接字。请参阅https://stackoverflow.com/a/18449544/337621。您可以将 PrintWriter 的内容写入 ByteArrayOutputStream,然后您可以将其内容作为字节数组写入 DataOutputStream。在客户端,您读取第一个字节数组,将其作为 ByteArrayInputStream 进行扫描,然后读取第二个字节数组,这将是您的屏幕截图。我想您还需要在数组之前将字节数组的大小写入 DataOutputStream 。