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