Waj*_*med 5 java android java-server
我可以显示收到的单个图像,但现在我想在我的磁盘上接收和写入多个图像,这些图像将在每5秒后从Android客户端发送一次.
Socket sock = servsock.accept();
dataInputStream = new DataInputStream(sock.getInputStream());
dataOutputStream = new DataOutputStream(sock.getOutputStream());
System.out.println("Accepted connection : " + sock);
dataInputStream = new DataInputStream(sock.getInputStream());
byte[] base64=dataInputStream.readUTF().getBytes();
byte[] arr=Base64.decodeBase64(base64);
FileOutputStream imageOutFile = new FileOutputStream("E:\\image.jpeg");
imageOutFile.write(arr);
Run Code Online (Sandbox Code Playgroud)
您需要在客户端和服务器之间构建一个协议。
如果图像大小是恒定的,您只需循环输入流并保持缓冲,直到获得固定数量的字节并写入所有已缓冲的图像。
否则,您需要添加一些元数据来指示图像的大小;例如,您可以使用这样的简单格式:
[size1][image1][size2][image2][size3][image3]
Run Code Online (Sandbox Code Playgroud)
其中 [size-i] 占据固定的空间量,[image-i] 是第 i 个图像的大小。
但最重要的是,不要尝试执行诸如处理图像、休眠 5 秒并检索下一张图像这样简单的协议,因为由于客户端、网络或服务器(您的代码和服务器)的原因,每个图像之间的确切时间可能会有很大差异。 /或文件系统)。
| 归档时间: |
|
| 查看次数: |
11316 次 |
| 最近记录: |