最近在做一个通过WIFI在手机之间传输文件的功能。需要在手机之间建立一个持久的Socket
连接并利用该连接传输数据。可以一次传输一个或多个文件。
在一次传输多个文件时,遇到了一个困难:如何在接收文件时确定文件之间的边界。
为了在接收端正确的拆分文件,在传输文件时需要传输每个文件的大小。
我采用了这样一种策略:首先发送每个文件的名称和大小,然后传输文件的内容。
protected void sendFile(Socket socket, File[] files) {
long totalSize = 0;
byte buf[] = new byte[8192];
int len;
try {
if (socket.isOutputShutdown()) {
return;
}
DataOutputStream dout = new DataOutputStream(
socke

本文介绍了在实现手机间通过WIFI进行文件传输时,如何通过Socket一次性传输多个文件的技术细节。针对如何确定文件边界的问题,提出了先发送文件名和大小,再传输文件内容的策略,并详细阐述了接收端如何解析缓冲区数据,正确拆分不同文件的过程。同时,讨论了两种解析方法,包括使用ByteArrayInputStream和DataInputStream,以及手动利用位运算进行解析。
最低0.47元/天 解锁文章
1686

被折叠的 条评论
为什么被折叠?



