我正在尝试实现对等视频传输。所以我做了
FileInputStream input = new FileInputStream(new File(UPLOAD_FILE_PATH));
byte[] fileArray = new byte[4095];
int byteSend;
while((byteSend = input.read(fileArray)) != -1) {
//System.out.println(String.valueOf(fileArray));
StringBuffer content = new StringBuffer();
content.append(new String(fileArray));
JSONObject obj = new JSONObject();
obj.put("id",i++);
obj.put("FileArrray",content);
obj.put("byteSend",byteSend);
mSocket.emit("mp4", obj);
byteSendTracker = byteSendTracker+byteSend;
System.out.println("send"+Arrays.toString(fileArray));
// output.write(fileArray,0,byteSend);
Thread.sleep(10);
}
output.flush();
input.close();
所以我所做的就是将此FileArrray作为String缓冲区发送到节点socket.io 然后从socket.io到另一个连接的客户端
socket.on("mp4",function(data){
console.log(data.id);
socket.broadcast.emit("getFile",data);
});
然后在接收方,我只需编写如下文件:
JSONObject obj = new JSONObject(String.valueOf(args[0]));
output.write(obj.getString("FileArrray").getBytes(),0,Integer.parseInt(obj.getString("byteSend")));
我尝试在上传的文件损坏时发送240kb mp4视频。有人能指出我正确的方向吗?