为什么要用rmi
在这次的项目中,对于客户端与服务器之间的通信,想了许多办法,由于做的是富客户端应用,最终将技术选定在了rmi和java-sockets两种之间,其中rmi的灵活性不高,客户端和服务器端都必须是java编写,但使用比较方便,反观java-sockets,虽然比较灵活,但需要自己规定服务器端和客户端之间的通信协议。比较麻烦,几经权衡,最终还是选择rmi来进行服务器-客户端通信
文件上传问题
在使用java-rmi的过程中,必然会遇到一个文件上传的问题,由于在rmi中无法传输文件流(比如rmi中的方法参数不能是fileinputstream之类的),那么我们只好选择一种折中的办法,就是先用fileinputstream将文件读到一个 byte数组中,然后把这个byte数组作为参数传进rmi的方法中,然后在服务器端将byte数组还原为outputstream,这样就能通过rmi 来传输文件了
这样做也有缺点,就是无法检验传输过来的数据的准确性。
下面我就一个实例来讲解一下
fileclient
package rmiupload;
import java.net.url;
import java.rmi.remote;
import java.rmi.remoteexception;
public interface filedataservice extends remote{
//这里的filename应该是该文件存放在服务器端的地址
public void upload(string filename, byte[] file) throws remoteexception;
}
filedataservice_imp
fileserver
如对本文有疑问, 点击进行留言回复!!
SpringBoot引用阿里easyexcel,Excel导出返回浏览器下载
HashMap、Hashtable、ConcurrentHashMap三者间的异同
解决RecycleView 中Item包含Edittext时,滑动view复用导致数据错乱的问题
多线程、同步工作原理、死锁案例、Lock接口、线程的生命周期的讲解及实现
网友评论